标题: [文本处理] 批处理如何多逻辑判断并运行一个程序? [打印本页]
作者: iii888iii 时间: 2022-3-26 20:24 标题: 批处理如何多逻辑判断并运行一个程序?
链接:https://pan.baidu.com/s/1ep3e9DJZX34MBt-BipUZBA
提取码:85pd
详情可查看附件. 谢谢老师帮忙.
条件:
当前文件夹.只有一个 *.xlsx文件
(子文件夹有文件,忽略)
案例为:1-2中文英文_中文英文字符_2022年03月26日13时00分_中文英文字符a_中文英文字符b_1024582_22034_72[忽略符号内内容].xlsx
1,
提取这个文件的时间.
案例上的是:2022年03月26日13时00分 赋值为 time
2,获取系统时间,赋值为 timesys
z p k
3,提取,all_=zpk= 1-2-1 这个文件夹名称.提取z,p,k,3个值
逻辑:
如果,以下3个条件之一成立,执行对应程序.
time大于(timesys+15分钟),并且 z为最大值且z>1,且k<3 z+p+k<33 执行z.exe程序
time大于(timesys+15分钟),并且 p为最大值且p>1,且z<3 且z+p+k<33 执行p.exe程序
time大于(timesys+15分钟),并且 k为最大值且k>1,且z<3 且z+p+k<33 执行k.exe程序
exit
作者: suchunping 时间: 2022-3-26 23:18
谢谢楼主分享
作者: iii888iii 时间: 2022-3-26 23:48
发错地方了,麻烦管理移动一下...
作者: Echo11 时间: 2022-3-27 14:21
额,你好,个人感觉比较混论,没看明白到底怎么个逻辑。
你应该多写实际例子。
输入条件?输出示例?3个exe在哪?
time 和 timesys 格式?示例?
作者: iii888iii 时间: 2022-3-27 16:16
回复 4# Echo11
格式无所谓,,主要目的是判断时间, time比系统时间timesys多15分钟,即可.
作者: idwma 时间: 2022-3-27 19:55
本帖最后由 idwma 于 2022-3-27 22:56 编辑
- #@&cls&powershell "type %~s0|out-string|iex"&pause&exit
- dir *.xlsx|%{
- if($_.name -match '\d{4}\D\d\d\D\d\d\D\d\d\D\d\d\D'){
- $time=[datetime]$matches[0]
- $timesys=(get-date).AddMinutes(15)
- if($(gi 'all_=zpk=*').name -match '\d+-\d+-\d+'){
- $zpk=$matches[0] -split '-'
- $z=$zpk[0]
- $p=$zpk[1]
- $k=$zpk[2]
- if($time -gt $timesys -and $z+$p+$k -lt 33){
- if($z -eq $($zpk|measure -max).maximum -and $z -gt 1 -and $k -lt 3){z.exe}
- if($p -eq $($zpk|measure -max).maximum -and $p -gt 1 -and $z -lt 3){p.exe}
- if($k -eq $($zpk|measure -max).maximum -and $k -gt 1 -and $z -lt 3){k.exe}
- }
- }
- }
- }
复制代码
作者: iii888iii 时间: 2022-3-27 22:27
回复 6# idwma
首先感谢您呢的帮助,有点小问题.
无法将值“20220327021733111”转换为类型“System.DateTime”。错误:“该字符串未被
识别为有效的 DateTime。”
所在位置 行:4 字符: 34
+ $time=[datetime]$matches[ <<<< 0]
+ CategoryInfo : NotSpecified: ( [], RuntimeException
+ FullyQualifiedErrorId : RuntimeException
请按任意键继续. . .
测试的,目录是 all_=zpk= 2-0-0 这个名称,条件是复合的.
作者: Echo11 时间: 2022-3-28 10:25
回复 5# iii888iii
想了想bat还是挺复杂的。
找到了这个,你看看呢?
http://www.bathome.net/thread-26277-1-11.html
作者: Batcher 时间: 2022-3-28 13:15
回复 1# iii888iii - @echo off
- cd /d "%~dp0"
-
- for /f "tokens=3 delims=_" %%i in ('dir /b /a-d *.xlsx') do (
- set "FileTime=%%i"
- )
- set "FileTime=%FileTime:~0,4%%FileTime:~5,2%%FileTime:~8,2%%FileTime:~11,2%%FileTime:~14,2%"
-
- set "MinutesOffset=15"
- set PSCMD=powershell -c "Get-Date (Get-Date).AddMinutes(5) -uformat ""%%Y%%m%%d%%H%%M"""
- for /f "delims=" %%i in ('%PSCMD%') do (
- set "DstTime=%%i"
- )
-
- for /f "delims=" %%i in ('dir /b /ad ^| findstr /b "all_="') do (
- set "FolderName=%%i"
- )
- for /f "tokens=2-4 delims=- " %%a in ("%FolderName%") do (
- set "z=%%a"
- set "p=%%b"
- set "k=%%c"
- )
- set /a sum=z+p+k
-
- if "%FileTime%" gtr "%DstTime%" (
- if %sum% lss 33 (
- REM 执行z.exe程序
- if %z% gtr %p% (
- if %z% gtr %p% (
- if %z% gtr 1 (
- if "%k%" lss 3 (
- start "" C:\Test\z.exe"
- )
- )
- )
- )
- REM 执行p.exe程序
- if %p% gtr %z% (
- if %p% gtr %k% (
- if %p% gtr 1 (
- if "%z%" lss 3 (
- start "" C:\Test\p.exe"
- )
- )
- )
- )
- REM 执行k.exe程序
- if %k% gtr %z% (
- if %k% gtr %p% (
- if %k% gtr 1 (
- if "%z%" lss 3 (
- start "" C:\Test\k.exe"
- )
- )
- )
- )
- )
- )
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |