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

回复 1# licunwei

以下代码存为test.bat运行,其中调用powershell完成最新目标文件的关键字检查,其余均由批处完成...
代码第10行可自定义返回间隔(秒数)假设值=5秒
  1. @echo off &setlocal
  2. set "d=D:\交易失败流水\%date:/=-%"
  3. if not exist "%d%" md "%d%"
  4. :[Loop]
  5. for /f "delims=" %%F in (' dir /b/tw/o-d/a-d "D:\SCETC\dataXml\*603.xml" ') do (set "F=%%~F"&goto[next])
  6. :[next]
  7. set "v=" & for /f %%v in (
  8. 'powershell "$s=gc '%F%' -raw -enc 'utf8';$p1=$s.indexof('CardLocalFee');$p2=$s.indexof('CardLocalPayFee');echo($s[$p1+15]+$s[$p2+18])" ') do (set "v=%%v")
  9. if "%v%"=="00" (copy /y "%F%" "%d%")
  10. timeout /t 5 /NoBreak >nul
  11. goto[Loop]
复制代码
1

评分人数

TOP

本帖最后由 aloha20200628 于 2024-6-26 08:07 编辑

回复 7# licunwei

4楼代码已被修正了网页读取编码...
求解本帖的一个关键是 ‘最新网页生成速度’ 与 ‘脚本代码单次检查文件+复制文件的处理速度’ 问题。例如,dir/tw 获取的文件时间戳是秒级精度,若最新网页文件可能在1秒内连续生成 就会有漏网之鱼,如是则须改用别法获取毫秒精度的文件时间戳,还需楼主确认...

TOP

本帖最后由 aloha20200628 于 2024-6-27 12:09 编辑

回复 7# licunwei

用批处拿下此帖是个有趣的练习,订正4楼代码如下...
关键是要调整算法流程》为了规避最新网页文件生成速度的问题,不是仅盯第一个最新文件F1而是顺序检查F1及其后一组连续生成的文件,直到遭遇上一轮检过的第一个文件为止,如此可确保每次轮检无一漏网。检查文件关键词改用系统内置的findstr.exe,因所匹配关键词均为ascii字符数据,故无须处理文件编码问题,而且批处调用findstr明显快过powershell。
  1. @echo off &setlocal
  2. set "d=D:\交易失败流水\%date%"
  3. if not exist "%d%" md "%d%"
  4. pushd "D:\SCETC\dataXml\"
  5. :[Loop]
  6. for /f "delims=" %%F in (' dir /b/tw/o-d/a-d "*603.xml" ') do (
  7. if not defined _lastF set "_lastF=%%F"
  8. if defined lastF if /i "%%F"=="%lastF%" goto[next]
  9. findstr /i "\"CardLocalFee\":\"0\",\"CardLocalPayfee\":\"0\"" "%%F">nul&&(copy /y "%%F" "%d%")
  10. )
  11. :[next]
  12. set "lastF=%_lastF%" &set "_lastF="
  13. timeout /t 3 /nobreak>nul
  14. goto[Loop]
复制代码

TOP

返回列表