[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理如何多逻辑判断并运行一个程序?

链接: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

回复 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. )
复制代码
1

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 5# iii888iii


    想了想bat还是挺复杂的。
找到了这个,你看看呢?
http://www.bathome.net/thread-26277-1-11.html

TOP

回复 6# idwma
首先感谢您呢的帮助,有点小问题.

    无法将值“20220327021733111”转换为类型“System.DateTime”。错误:“该字符串未被
识别为有效的 DateTime。”
所在位置 行:4 字符: 34
+         $time=[datetime]$matches[ <<<< 0]
    + CategoryInfo          : NotSpecified: ( [], RuntimeException
    + FullyQualifiedErrorId : RuntimeException

请按任意键继续. . .

测试的,目录是  all_=zpk= 2-0-0  这个名称,条件是复合的.

TOP

本帖最后由 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. }
复制代码

TOP

回复 4# Echo11


  格式无所谓,,主要目的是判断时间,  time比系统时间timesys多15分钟,即可.

TOP

额,你好,个人感觉比较混论,没看明白到底怎么个逻辑。
你应该多写实际例子。
输入条件?输出示例?3个exe在哪?
time 和 timesys 格式?示例?

TOP

发错地方了,麻烦管理移动一下...

TOP

谢谢楼主分享

TOP

返回列表