Board logo

标题: [文本处理] 批处理如何多逻辑判断并运行一个程序? [打印本页]

作者: 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 编辑
  1. #@&cls&powershell "type %~s0|out-string|iex"&pause&exit
  2. dir *.xlsx|%{
  3.     if($_.name -match '\d{4}\D\d\d\D\d\d\D\d\d\D\d\d\D'){
  4.         $time=[datetime]$matches[0]
  5.         $timesys=(get-date).AddMinutes(15)
  6.         if($(gi 'all_=zpk=*').name -match '\d+-\d+-\d+'){
  7.             $zpk=$matches[0] -split '-'
  8.             $z=$zpk[0]
  9.             $p=$zpk[1]
  10.             $k=$zpk[2]
  11.             if($time -gt $timesys -and $z+$p+$k -lt 33){
  12.                 if($z -eq $($zpk|measure -max).maximum -and $z -gt 1 -and $k -lt 3){z.exe}
  13.                 if($p -eq $($zpk|measure -max).maximum -and $p -gt 1 -and $z -lt 3){p.exe}
  14.                 if($k -eq $($zpk|measure -max).maximum -and $k -gt 1 -and $z -lt 3){k.exe}
  15.             }
  16.         }
  17.     }
  18. }
复制代码

作者: 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
  1. @echo off
  2. cd /d "%~dp0"
  3. for /f "tokens=3 delims=_" %%i in ('dir /b /a-d *.xlsx') do (
  4.     set "FileTime=%%i"
  5. )
  6. set "FileTime=%FileTime:~0,4%%FileTime:~5,2%%FileTime:~8,2%%FileTime:~11,2%%FileTime:~14,2%"
  7. set "MinutesOffset=15"
  8. set PSCMD=powershell -c "Get-Date (Get-Date).AddMinutes(5) -uformat ""%%Y%%m%%d%%H%%M"""
  9. for /f "delims=" %%i in ('%PSCMD%') do (
  10.     set "DstTime=%%i"
  11. )
  12. for /f "delims=" %%i in ('dir /b /ad ^| findstr /b "all_="') do (
  13.     set "FolderName=%%i"
  14. )
  15. for /f "tokens=2-4 delims=- " %%a in ("%FolderName%") do (
  16.     set "z=%%a"
  17.     set "p=%%b"
  18.     set "k=%%c"
  19. )
  20. set /a sum=z+p+k
  21. if "%FileTime%" gtr "%DstTime%" (
  22.     if %sum% lss 33 (
  23.         REM 执行z.exe程序
  24.         if %z% gtr %p% (
  25.             if %z% gtr %p% (
  26.                 if %z% gtr 1 (
  27.                     if "%k%" lss 3 (
  28.                         start "" C:\Test\z.exe"
  29.                     )
  30.                 )
  31.             )
  32.         )
  33.         REM 执行p.exe程序
  34.         if %p% gtr %z% (
  35.             if %p% gtr %k% (
  36.                 if %p% gtr 1 (
  37.                     if "%z%" lss 3 (
  38.                         start "" C:\Test\p.exe"
  39.                     )
  40.                 )
  41.             )
  42.         )
  43.         REM 执行k.exe程序
  44.         if %k% gtr %z% (
  45.             if %k% gtr %p% (
  46.                 if %k% gtr 1 (
  47.                     if "%z%" lss 3 (
  48.                         start "" C:\Test\k.exe"
  49.                     )
  50.                 )
  51.             )
  52.         )
  53.     )
  54. )
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2