找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 12368|回复: 18

[文件操作] [已解决]批量文件断点续处理,关于findstr在处理记录文件中查找无效的问题

[复制链接]
发表于 2025-6-15 17:36:24 | 显示全部楼层 |阅读模式
本帖最后由 rdingding1 于 2025-6-21 19:59 编辑

问题已解决,感谢77七、aloha20200628、娃娃帮助,总结:
本脚本用于批量处理单个文件夹下的txt文档
(断点续处理,进度显示,用时统计)
方法三效率及IO读写最优(备注:dir.. | findstr.. 还有小细节待弄明白)

方法一:原findstr放入循环
方法二:采用dir.. | findstr.. + 每循环记录一次
方法三:采用dir.. | findstr.. + 每100个文件记录一次
(受限与变量长度8190,如果路径太长脚本会自动退出,按路径最长字符260,30个是保守数值)

方法三的模版如下
  1. @echo off
  2. rem 使用说明:断点续处理.cmd 待处理路径  或直接拖入单个文件夹到cmd文件上
  3. rem 使用说明:处理txt文档
  4. setlocal enabledelayedexpansion
  5. rem ========== 配置区域 ==========
  6. set "input_dir=%~1"
  7. set "log_file=operation.log"
  8. set "processed_list=processed_files.txt"
  9. rem ========== 初始化 ==========
  10. if not exist "%input_dir%" (
  11.     echo 错误:目录不存在
  12.     echo 错误:目录不存在 >> "%log_file%"
  13.     exit /b 1
  14. )
  15. echo 开始处理: %date% %time%
  16. echo 开始处理: %date% %time% > "%log_file%"
  17. if not exist "%processed_list%" (
  18.     echo 记录开始 > "%processed_list%"
  19. )
  20. set t=%time%
  21. set crlf=^


  22. rem 注意上面一行,set crlf=^ 后面紧跟着一个回车,不要有其他空格
  23. rem ========== 主循环 ==========
  24. set /a count = 1
  25. dir /b /s /a-d "%input_dir%\*.txt" | findstr  /lxivg:"%processed_list%">$.#
  26. for /f "delims=" %%i in ('find /v /c "" $.#') do set totalcount=%%i
  27. set totalcount=%totalcount:*:=%
  28. for /f "delims=" %%a in ($.#) do (
  29.     set /p =!count! / %totalcount% <nul
  30.     set /p =<nul
  31.     set "file=%%a"
  32.     rem  要处理的语句
  33.     set /a abc=!count!%%100
  34.     if !abc! equ 0 (
  35.         set "files=!files!!crlf!!file!"
  36.         echo !files! 已处理 >> "%log_file%"
  37.         echo !files:\=\\!>>"%processed_list%"
  38.         set "files="
  39.     ) else (
  40.              if [!files!]==[] (
  41.                     set "files=!file!"
  42.                   ) else (
  43.                      set "files=!files!!crlf!!file!"
  44.                   )
  45.     )
  46.     set /a count += 1
  47. )
  48. echo !files! 已处理 >> "%log_file%"
  49. echo !files:\=\\!>>"%processed_list%"
  50. del /q $.#
  51. :: ========== 收尾 ==========
  52. set t1=%time%
  53. if "%t1:~,2%" lss "%t:~,2%" set "add=+24"
  54. set /a "times=(%t1:~,2%-%t:~,2%%add%)*360000+(1%t1:~3,2%%%100-1%t:~3,2%%%100)*6000+(1%t1:~6,2%%%100-1%t:~6,2%%%100)*100+(1%t1:~-2%%%100-1%t:~-2%%%100)" ,"ss=(times/100)%%60","mm=(times/6000)%%60","hh=times/360000","ms=times%%100"
  55. echo 处理完成: %date% %time%
  56. echo 处理完成: %date% %time% >> "%log_file%"
  57. echo 共处理 %totalcount% 个文件,耗时 %hh%:%mm%:%ss%.%ms%  秒
  58. echo 操作日志已保存到: %log_file%
  59. pause
复制代码
方法二的模版如下
  1. @echo off
  2. rem 使用说明:断点续处理.cmd 待处理路径  或直接拖入单个文件夹到cmd文件上
  3. rem 使用说明:处理txt文档
  4. setlocal enabledelayedexpansion
  5. rem ========== 配置区域 ==========
  6. set "input_dir=%~1"
  7. set "log_file=operation.log"
  8. set "processed_list=processed_files.txt"
  9. rem ========== 初始化 ==========
  10. if not exist "%input_dir%" (
  11.     echo 错误:目录不存在
  12.     echo 错误:目录不存在 >> "%log_file%"
  13.     exit /b 1
  14. )
  15. echo 开始处理: %date% %time%
  16. echo 开始处理: %date% %time% > "%log_file%"
  17. if not exist "%processed_list%" (
  18.     echo 记录开始 > "%processed_list%"
  19. )
  20. set t=%time%
  21. rem ========== 主循环 ==========
  22. set /a count = 1
  23. dir /b /s /a-d "%input_dir%\*.txt" | findstr  /lxivg:"%processed_list%">$.#
  24. for /f "delims=" %%i in ('find /v /c "" $.#') do set totalcount=%%i
  25. set totalcount=%totalcount:*:=%
  26. for /f "delims=" %%a in ($.#) do (
  27.     set /p =!count! / %totalcount% <nul
  28.     set /p =<nul
  29.     set "file=%%a"
  30.     rem  要处理的语句
  31.     set /a count += 1
  32.     echo !file! 已处理 >> "%log_file%"
  33.     echo !file:\=\\!>>"%processed_list%"
  34. )
  35. del /q $.#
  36. :: ========== 收尾 ==========
  37. set t1=%time%
  38. if "%t1:~,2%" lss "%t:~,2%" set "add=+24"
  39. set /a "times=(%t1:~,2%-%t:~,2%%add%)*360000+(1%t1:~3,2%%%100-1%t:~3,2%%%100)*6000+(1%t1:~6,2%%%100-1%t:~6,2%%%100)*100+(1%t1:~-2%%%100-1%t:~-2%%%100)" ,"ss=(times/100)%%60","mm=(times/6000)%%60","hh=times/360000","ms=times%%100"
  40. echo 处理完成: %date% %time%
  41. echo 处理完成: %date% %time% >> "%log_file%"
  42. echo 共处理 %totalcount% 个文件,耗时 %hh%:%mm%:%ss%.%ms%  秒
  43. echo 操作日志已保存到: %log_file%
  44. pause
复制代码
方法一的模版如下
  1. @echo off
  2. rem 使用说明:断点续处理.cmd 待处理路径  或直接拖入单个文件夹到cmd文件上
  3. setlocal enabledelayedexpansion
  4. rem ========== 配置区域 ==========
  5. set "input_dir=%~1"
  6. set "log_file=operation.log"
  7. set "processed_list=processed_files.txt"
  8. rem ========== 初始化 ==========
  9. if not exist "%input_dir%" (
  10.     echo 错误:目录不存在
  11.     echo 错误:目录不存在 >> "%log_file%"
  12.     exit /b 1
  13. )
  14. echo 开始处理: %date% %time%
  15. echo 开始处理: %date% %time% > "%log_file%"
  16. if not exist "%processed_list%" (
  17.     echo 记录开始 > "%processed_list%"
  18. )
  19. set t=%time%
  20. rem ========== 主循环 ==========
  21. set /a count = 1
  22. for /r "%input_dir%" %%a in (*.txt) do (
  23.     set /a count += 1
  24.     set /p =!count! <nul
  25.     set /p =<nul
  26.     set "file=%%a"
  27.     set "file_id=!file:\=\\!"
  28.     findstr /x /c:"!file_id!"  "%processed_list%" >nul
  29.     if !errorlevel! equ 0 (
  30.         echo 跳过 !file! 已处理 >> "%log_file%"
  31.     ) else  (
  32.         rem  要处理的语句
  33.         echo !file! 已处理 >> "%log_file%"
  34.         echo !file!>> "%processed_list%"
  35.    )
  36. )
  37. rem ========== 收尾 ==========
  38. set t1=%time%
  39. if "%t1:~,2%" lss "%t:~,2%" set "add=+24"
  40. set /a "times=(%t1:~,2%-%t:~,2%%add%)*360000+(1%t1:~3,2%%%100-1%t:~3,2%%%100)*6000+(1%t1:~6,2%%%100-1%t:~6,2%%%100)*100+(1%t1:~-2%%%100-1%t:~-2%%%100)" ,"ss=(times/100)%%60","mm=(times/6000)%%60","hh=times/360000","ms=times%%100"
  41. echo 处理完成: %date% %time%
  42. echo 处理完成: %date% %time% >> "%log_file%"
  43. echo 共处理 !count! 个文件,耗时 %hh%:%mm%:%ss%.%ms%  秒
  44. echo 操作日志已保存到: %log_file%
  45. pause
复制代码
制作总表,再按顺序执行的方式:
待编辑

后续:
以上做法不知道文件多时效率怎样,是否会有其它问题。
希望有像python那样,开始将整个记录文件读入内容,做成字典一样,IO读写少,索引速度快,实在不行该为用python来循环

======原贴内容如下====

目前要处理很多数量的文件,担心中途中断,特增加断点续处理功能。我的思路是采用processed_files.txt记录处理过的文件路径,再次运行时循环中用findstr查询是否存在记录列表中,存在则跳过。
目前脚本无法实现,本人基础较差,使用多次搜索、问Ai及试验无效,特求助,望大神指点迷津,拜谢!

操作系统:win10 64
当前执行路径为:C:\Users\rding\Downloads\大陆武侠\
路径内含文件:周郎《织心拐》.txt 等。
processed_files.txt文件内容范例如下:

C:\Users\rding\Downloads\大陆武侠\周郎《织心拐》.txt
C:\Users\rding\Downloads\大陆武侠\令狐庸\令狐庸(伪)《风清扬传》.txt
C:\Users\rding\Downloads\大陆武侠\令狐庸\令狐庸《剑魔独孤求败》.txt


有问题的脚本如下(使用时跟上处理路径 C:\Users\rding\Downloads\大陆武侠\ ,目前跟踪findstr下一句的errorlevel总是1,我将findstr echo出的内容直接执行却没有问题)
  1. setlocal enabledelayedexpansion
  2. @echo off
  3. rem ========== 配置区域 ==========
  4. set "input_dir=%~1"
  5. set "log_file=operation.log"
  6. set "processed_list=processed_files.txt"
  7. rem ========== 初始化 ==========
  8. if not exist "%input_dir%" (
  9.     echo 错误:目录不存在
  10.     echo 错误:目录不存在 >> "%log_file%"
  11.     exit /b 1
  12. )
  13. echo 开始处理: %date% %time%
  14. echo 开始处理: %date% %time% > "%log_file%"
  15. type nul > "%processed_list%"
  16. rem ========== 主循环 ==========
  17. for /r "%input_dir%" %%a in (*.txt) do (
  18.     set "file=%%a"
  19.     set "file_id=!file:\=\\!"
  20.     findstr /x /c:"!file_id!"  "%processed_list%"
  21.     if !errorlevel! equ 0 (
  22.         echo 跳过 !file! 已处理 >> "%log_file%"
  23.     ) else  (
  24.         echo !file!>> "%processed_list%")
  25. )
  26. rem ========== 收尾 ==========
  27. echo 处理完成: %date% %time% >> "%log_file%"
  28. echo 操作日志已保存到: %log_file%
  29. pause
复制代码
上述代码我将findstr该语句直接加echo,用返回的值直接粘贴执行是没有问题的,但直接执行就是不行,百思不得其解。

另简单测试.cmd  执行没有问题,返回errorlevel是0
  1. setlocal enabledelayedexpansion
  2. set "processed_list=processed_files.txt"
  3. set "file=C:\Users\rding\Downloads\大陆武侠\周郎《织心拐》.txt"
  4. set "file_id=!file:\=\\!"
  5. findstr  /x /c:"!file_id!"  "%processed_list%"
  6. echo !errorlevel!
  7. pause
复制代码
以上代码执行没有问题,errorlevel结果为0

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2025-6-15 19:07:52 | 显示全部楼层
断点续处理功能

好想法!实用。
像播放器的记忆播放(处理)进度,下次打开继续播放(处理)。
阅读中的书签功能,下次从书签继续处理。
以下是关键词

批处理下次从书签继续处理


AI给的内容,楼主看看有没有参考价值。
  1. @echo off
  2. setlocal enabledelayedexpansion

  3. :: 读取上次进度
  4. if exist progress.txt (
  5.     set /p last=<progress.txt
  6. ) else (
  7.     set last=0
  8. )

  9. :: 处理文件
  10. for /l %%i in (%last%,1,100) do (
  11.     echo 正在处理第%%i个文件...
  12.     echo %%i>progress.txt
  13.     :: 这里添加实际处理代码
  14. )

  15. del progress.txt
  16. echo 处理完成!
复制代码
发表于 2025-6-15 19:12:45 | 显示全部楼层
试试删除第15行

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2025-6-15 19:12:57 | 显示全部楼层
回复 1# rdingding1

一楼代码第15行 type nul > "%processed_list%" 会生成一个空文件 processed_files.txt,因此 第20行 findstr /x /c:"!file_id!"  "%processed_list%" 查找这个空文件当然总是失败了,即其返回值会恒为1...

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2025-6-15 19:44:25 | 显示全部楼层
本帖最后由 rdingding1 于 2025-6-15 20:05 编辑

回复 3# 77七
回复 4# aloha20200628

谢谢指点,确实很明显的逻辑错误,
调试的时候,因为是动态生成记录文件,导致我echo出来的是后面生成的,所以粘贴出来结果没有问题,就魔怔了硬盯着这个地方,唉,花了好长时间没想通。
再次感谢!

回复 2# 娃娃
嗯,这个是先制作总表,再按顺序执行的思路,可以参考借鉴,后面我整理一下,谢谢指点
发表于 2025-6-15 20:32:55 | 显示全部楼层
回复 5# rdingding1


   惭愧!我是什么都不懂。只是对批处理感兴趣,现在还在门外徘徊呢。只是觉得楼主的问题若能解决,(此CMD)对自己也有用。楼上二位前辈才真切实出力的。
发表于 2025-6-16 08:25:20 | 显示全部楼层
本帖最后由 77七 于 2025-6-22 19:13 编辑

错误代码,findstr有问题。
  1. @echo off
  2. rem ========== 配置区域 ==========
  3. set "input_dir=%~1"
  4. set "log_file=%~dp0\operation.log"
  5. set "processed_list=%~dp0\processed_files.txt"

  6. rem ========== 初始化 ==========
  7. if not exist "%input_dir%" (
  8.         echo 错误:目录不存在
  9.         >> "%log_file%" echo 错误:目录不存在
  10.         exit /b 1
  11. )
  12. echo 开始处理: %date% %time%
  13. > "%log_file%" echo 开始处理: %date% %time%
  14. if not exist "%processed_list%" (
  15.         type nul > "%processed_list%"
  16. )

  17. rem 防止空文件导致findstr /g 报错
  18. findstr . "%processed_list%" 1>nul
  19. if errorlevel 1 (
  20.         >>"%processed_list%" echo x
  21. )

  22. rem ========== 主循环 ==========
  23. for /f "delims=" %%i in ('dir /b /s /a-d "%input_dir%\*.txt" ^| findstr /lxivg:"%processed_list%"') do (
  24.         echo %%i 已处理
  25.         >> "%log_file%" echo %%i 已处理
  26.         set str=%%i
  27.         setlocal enabledelayedexpansion
  28.         >> "%processed_list%" echo !str:\=\\!
  29.         endlocal
  30.         rem 要处理的语句
  31. )

  32. rem ========== 收尾 ==========
  33. >> "%log_file%" echo 处理完成: %date% %time%
  34. echo 操作日志已保存到: %log_file%
  35. pause
复制代码
发表于 2025-6-16 09:12:10 | 显示全部楼层
通过去掉文件 a 属性,过滤已处理文件
  1. @echo off
  2. rem ========== 配置区域 ==========
  3. set "input_dir=%~1"
  4. set "log_file=%~dp0\operation.log"

  5. rem ========== 初始化 ==========
  6. if not exist "%input_dir%" (
  7.         echo 错误:目录不存在
  8.         >> "%log_file%" echo 错误:目录不存在
  9.         exit /b 1
  10. )
  11. echo 开始处理: %date% %time%
  12. > "%log_file%" echo 开始处理: %date% %time%

  13. rem ========== 主循环 ==========
  14. for /f "delims=" %%i in ('dir /b /s /a-da "%input_dir%\*.txt"') do (
  15.         rem 要处理的语句
  16.         echo %%i 已处理
  17.         >> "%log_file%" echo %%i 已处理
  18.         attrib -a "%%i"
  19. )

  20. rem ========== 收尾 ==========
  21. >> "%log_file%" echo 处理完成: %date% %time%
  22. echo 操作日志已保存到: %log_file%
  23. pause
复制代码
发表于 2025-6-16 18:34:42 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-6-16 19:00 编辑

回复 1# rdingding1

当处理大量数据时,一楼代码可能会有两个明显的效率瓶颈,一是在主循环内反复追写 >> 日志文件和记录文件,二是在主循环内反复调用 findstr 查找文件。解决前者要看主循环内 '要处理的真实语句' 是否耗时更长,若是,则仅计较前者就没有太大意义了。解决后者可用 findstr /vilg 一步到位,类似楼主所言的 python 算法效率(当然要确保记录文件 processed_files.txt 非空),例如用以下代码替换一楼代码中的第20-33行试试...

  1. for /f "delims=" %%a in ('dir /b/s/a-d "%input_dir%\*.txt" ^| findstr /vilg:"%processed_list%" ') do (
  2.     set "file=%%a"
  3.     REM 要处理的真实语句
  4.     echo !file! 已处理
  5.     echo !file! 已处理>>"%log_file%"
  6.     echo !file!>>"%processed_list%"
  7. )
复制代码
如果被处理的文件量超过千行甚至上万行,则应将 dir...|findstr... 操作移出 for...(),以免严重滞塞循环体内的管道进程,例如改用以下代码替换一楼代码中的第20-33行...

  1. dir /b/s/a-d "%input_dir%\*.txt" | findstr /vilg:"%processed_list%">$.#
  2. for /f "delims=" %%a in ($.#) do (
  3.     set "file=%%a"
  4.     REM 要处理的真实语句
  5.     echo !file! 已处理
  6.     echo !file! 已处理>>"%log_file%"
  7.     echo !file!>>"%processed_list%"
  8. )
  9. del /q $.#
复制代码
 楼主| 发表于 2025-6-19 21:01:50 | 显示全部楼层
回复 7# 77七
感谢百忙中的指导,多费心了,辛苦了:
1.  防止空文件导致findstr出错
2.  使用  dir /b /s /a-d "%input_dir%\*.txt" ^| findstr /lxivg:"%processed_list% 代替每次findstr循环,减少循环提高效率,减少IO

回复 8# 77七
用默认文件均有存档属性,处理过的去除存档属性,全部完成后再统一加上。
这也是个很好的思路,在一些特殊情况下可能有奇效。

回复 9# aloha20200628
感谢百忙中的指导,虽然我知道原来的脚本效率低,但基础太差,没法解决,经两位大神指导,原来还可以这样,学习了

另烦请两位再指点一下,我执行 dir .. | findstr ... 这条关键指令时没有成功
我做的最小试验,当前目录D:\试验  ,该文件夹下有 log.txt 、 1.txt 、2.txt 、 3.txt
log.txt 文件内容为
"
D:\试验\log.txt
D:\试验\1.txt
"
cmd下执行下面代码,显示的却是所有的txt清单,没有排除log.txt中的?
  1. D:\试验>dir /b /s /a-d "D:\试验\*.txt" | findstr /vilg:"log.txt"
复制代码
  1. D:\试验>dir /b /s /a-d "D:\试验\*.txt" | findstr /vilg:"D:\试验\log.txt"
复制代码
试验了很久,还是不对,特请教,谢谢!!
发表于 2025-6-19 21:30:12 | 显示全部楼层
回复 10# rdingding1


   
如果你测试7楼代码没问题,则需要按照7楼第26、31行代码复刻,26行的/x 完全匹配,尤其是31行,对路径的\进行了替换。
发表于 2025-6-19 21:47:50 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-6-19 22:01 编辑

回复 10# rdingding1

采用 findstr /g 参数会强制搜索词文件中出现的 \ 字符为转义字符,故须将路径分隔符 \ 替换为 \\ 方可有效,log.txt 内容须改为如下即可

  1. D:\\试验\\log.txt
  2. D:\\试验\\1.txt
复制代码
 楼主| 发表于 2025-6-21 18:56:49 | 显示全部楼层
本帖最后由 rdingding1 于 2025-6-21 20:02 编辑

回复 11# 77七
回复 12# aloha20200628

感谢两位的协助,谢谢~~
确实 findstr 特殊字符的“坑” 我又忘记了,囧rz
实际试验发现还有个“坑” 是 dir... | findstr... 中 findstr /vxilg:"processed_files.txt" ,processed_files.txt这个文件须为GBK编码,UTF8(含或不含BOM)均不行;
我修改了编码,如1楼的方法三、方法二,大致是满足需求,就是dir... | findstr... 会发现实际已有记录,但仍然会再次被检索出来。
例如我第一次完整执行了一般,查看记录(processed_files.txt)数量也是对的,但再次执行还会有少量数据被检索到$.#文件里,我手工检验实际已经执行过了,又是一个特别头疼的地方,折腾了一圈,没有找到原因,不知道两位大神是否有遇到过,请指导,谢谢!

========
另实际测试运行时间大略记录(处理语句为空时):
方法一:原findstr放入循环
方法二:采用dir.. | findstr.. + 每循环记录一次
方法三:采用dir.. | findstr.. + 每100个文件记录一次

文件数        方法类型        记录文件空        记录文件满
3.5K个        方法一         54s                54s
                方法二        4.8s                5.7s
                方法三        3.2s                5.2s
18K个        方法一         5m25s        5m42s
                方法二        23s                1m17s
                方法三        15s                1m13s

备注:记录文件满时数据不足,因为会有剩余文件,理论上应该没有剩余文件
          目前150个文件,二次约会有4个;
                3.5K个文件,二次约会有200个;
                 18K个文件,二次约会有5000个;
========
参考:
1)dir /b /s /a-d "*.txt" | findstr /vxilg:"processed_files.txt"
    processed_files.txt 须为GBK编码;
    除了\特殊字符,是否还有其它?
    结果仍存在部分异常?
2)变量长度最长8190
[系统相关] 批处理无法在for中给变量累加赋值?
发表于 2025-6-21 20:33:35 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-6-22 00:30 编辑

回复 13# rdingding1

要看看那些少量漏网数据(即全路径文件名)长啥样?是否有共同特征?
你还可以用以下简单方法作另一个验证》

一。创建当前目录及其子目录中的 *.txt 全记录文件 "$.$"

  1. dir /b/s/a-d *.txt>$.$
复制代码
二。用记事本将 $.$ 文件中的 \\\ 全局替换后存盘
三。验证 findstr /vlig 过滤结果是否为空(即是否还会有漏网数据)? 如果为空,说明 findstr /vlig 用法没问题,很可能与一楼代码中在开启变量延迟后处理记录文件有关...

  1. dir /b/s/a-d *.txt|findstr /vlig:"$.$"
复制代码
发表于 2025-6-21 22:35:03 | 显示全部楼层
本帖最后由 77七 于 2025-6-24 11:13 编辑

我试了一下,的确会漏掉一些,但是将漏掉的这些追加到排除文件,就成功排除了,一个不漏。
建议楼主可以试试8楼文件属性的方法,我觉得这个方法挺好的,相当于给文件做了一个标记,包括dir del robocopy等等都能按属性操作配合,我觉得大多数情况可以用,而且很好用。

另外建议,不要随意修改1楼,影响阅读,有关键的可以补充,其它直接回帖就行。
更正:测试了数量更多的文件,发现部分路径含有 ”\数字“经过多次追加仍然排除不掉,部分可以,建议放弃findstr /g。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 11:16 , Processed in 0.021537 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表