[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
使用说明:
下载论坛第三方命令行 DateX和EchoX ,和脚本放在一起(或者放入system32目录,或者更将第三方命令行所在目录加入环境变量PATH)
  1. @echo off
  2. for /f %%a in ('datex -f "yyyymmdd"') do set "_date=%%a"
  3. for /f "delims=" %%a in ('type name_list.txt') do (
  4. set "n="
  5. for /r "d:\test\测试" %%b in (*%%a*%_date%* *%_date%*%%a*) do set n=1
  6. if defined n (
  7. echox  -w 14 -c 0e -n "%%a"
  8. echox  -w 12 -c 0e "【已报/√】"
  9. set/a yes+=1
  10. ) else (
  11. echox  -w 14 -c 04 -n "%%a"
  12. echox  -w 12 -c 04 "【未报/×】"
  13. set/a not+=1
  14. )
  15. )
  16. set/a sum=%yes%+%not%
  17. echo.&echo 结果统计:
  18. echo 已上报 %yes%/%sum%
  19. echo 未上报 %not%/%sum%
  20. pause
复制代码
QQ 33892006

TOP

本帖最后由 yhcfsr 于 2018-6-21 12:32 编辑

回复 5# clk_gameboy
  1.   for /r "d:\test\测试" %%b in (*%%a*%_date%* *%_date%*%%a*) do set n=1
复制代码
这句里面的"d:\test\测试"是指文件所在目录。很显然,你的目录并不是这样的。
我注意到你的文件和BAT放在一起,可以直接删除,即改成 for /r %%b in ........
又或者自定义为文件所在目录

再补充一点,测试代码中,BAT与名单文件name_list.txt是放一起的.如果不是放一起,name_list.txt要写全路径如:"d:\abc\123\name_list.txt",双引号也不能省.
QQ 33892006

TOP

本帖最后由 yhcfsr 于 2018-6-29 18:39 编辑

回复 7# clk_gameboy

问题所在,是第一步获取的日期,DATEX获取的是当前日期,你的文件全都是过去的日期,怎么可能匹配到文件????????
下面脚本改了下,有详细说明.不过我没有测试,如果有问题,请反馈.
  1. @echo off
  2. ::脚本可以放在任何地方执行,不一定要和名单或要检索的文件放在一起
  3. ::=======用户定义区=========================
  4. ::指定要检索的文件日期,格式有多种,以下仅供参考.
  5. ::如果不指定日期,可以删除下面语句,则获取当前日期
  6. set "spDate=2018-06-16"
  7. ::指定文件要检索的文件目录
  8. ::如果不指定,可删除下面语句;此时,BAT脚本要与检索文件放在同一目录
  9. set "srcDir=d:\test\测试"
  10. ::指定名单路径
  11. ::如果不指定,可删除下面语句;则名单文件名必须为name_list.txt,且必须与BAT放在一起
  12. set "namList=d:\test\name_list.txt"
  13. ::==========================================
  14. if not defined spDate set "spDate=%date%"
  15. if not defined srcDir set "srcDir=%cd%"
  16. if not defined namLst set "namList=name_list.txt"
  17. for /f %%a in ('datex -d %spDate% -f "yyyymmdd"') do set "_date=%%a"
  18. for /f "delims=" %%a in ('type "%name_list%"') do (
  19. set "n="
  20. for /r "%srcDir%" %%b in (*%%a*%_date%* *%_date%*%%a*) do set n=1
  21. if defined n (
  22. echox  -w 14 -c 0e -n "%%a"
  23. echox  -w 12 -c 0e "【已报/√】"
  24. set/a yes+=1
  25. ) else (
  26. echox  -w 14 -c 04 -n "%%a"
  27. echox  -w 12 -c 04 "【未报/×】"
  28. set/a not+=1
  29. )
  30. )
  31. set/a sum=%yes%+%not%
  32. echo.&echo 结果统计:
  33. echo 已上报 %yes%/%sum%
  34. echo 未上报 %not%/%sum%
  35. pause
复制代码
1

评分人数

QQ 33892006

TOP

返回列表