Board logo

标题: [文本处理] 批处理命令findstr /v /g:的问题的困惑 [打印本页]

作者: yyz219    时间: 2022-2-9 17:26     标题: 批处理命令findstr /v /g:的问题的困惑

  1. @echo off
  2. findstr /v /g:需要删除内容1.txt "a.txt" >"c.txt"
  3. pause >nul
复制代码
++++++++++++++++++++++++++++++++++
a.txt内容是:
  1. @Echo Off
  2. Title Reg Converter v1.1 & Color 1A
  3. cd %systemroot%\system32
  4. call :IsAdmin
  5. REM ; 由 Total Uninstall 产生
  6. REM ;【窗口位置:“左300”、“上150”】
  7. Reg.exe add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MpsSvc\Parameters\PortKeywords\DHCP" /v "Collection" /t REG_BINARY /d "" /f
  8. Reg.exe add "HKEY_USERS\S-1-5-21-3291519012-2868546545-2290023086-500\Console" /v "WindowPosition" /t REG_DWORD /d "9830700" /f
  9. Exit
  10. :IsAdmin
  11. Reg.exe query "HKU\S-1-5-19\Environment"
  12. If Not %ERRORLEVEL% EQU 0 (
  13. Cls & Echo You must have administrator rights to continue ...
  14. Pause & Exit
  15. )
  16. Cls
  17. goto:eof
复制代码
++++++++++++++++++++++++++++++++
需要删除内容1.txt:
  1. Title Reg Converter v1.1 & Color 1A
  2. cd %systemroot%\system32
  3. call :IsAdmin
  4. REM ; 由 Total Uninstall 产生
  5. REM ;【窗口位置:“左300”、“上150”】
  6. :IsAdmin
  7. Reg.exe query "HKU\S-1-5-19\Environment"
  8. If Not %ERRORLEVEL% EQU 0 (
  9. Cls & Echo You must have administrator rights to continue ...
  10. Pause & Exit
  11. )
  12. Cls
  13. goto:eof
复制代码
++++++++++++++++++++++++++++++++++++++++++++++
运行后得到的c.txt
@Echo Off
cd %systemroot%\system32——————————这个为什么没有删除?

Reg.exe add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MpsSvc\Parameters\PortKeywords\DHCP" /v "Collection" /t REG_BINARY /d "" /f
Reg.exe add "HKEY_USERS\S-1-5-21-3291519012-2868546545-2290023086-500\Console" /v "WindowPosition" /t REG_DWORD /d "9830700" /f
Exit

Reg.exe query "HKU\S-1-5-19\Environment"——————————这个为什么没有删除?
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
这个问题困惑了很久,不知道为什么会这样?
+++++++++++++++++++++++++++
我希望得到的结果是:
  1. @Echo Off
  2. Reg.exe add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MpsSvc\Parameters\PortKeywords\DHCP" /v "Collection" /t REG_BINARY /d "" /f
  3. Reg.exe add "HKEY_USERS\S-1-5-21-3291519012-2868546545-2290023086-500\Console" /v "WindowPosition" /t REG_DWORD /d "9830700" /f
  4. Exit
复制代码
【实际上我通过第2次操作,已经能够实现上面的结果,只是想知道在哪里出现了问题】
  1. findstr /v /g:需要删除内容2.txt "c.txt" >d.txt
复制代码

作者: yyz219    时间: 2022-2-9 17:58

奇怪,将需要删除内容1.txt改为:
Title Reg Converter v1.1 & Color 1A
cd
call :IsAdmin

REM ; 由 Total Uninstall 产生
REM ;【窗口位置:“左300”、“上150”】

:IsAdmin
Reg.exe query
If Not %ERRORLEVEL% EQU 0 (
Cls & Echo You must have administrator rights to continue ...
Pause & Exit
)
Cls
goto:eof
+++++++++++++++++++++++
就能够一次删除干净:
@Echo Off

Reg.exe add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MpsSvc\Parameters\PortKeywords\DHCP" /v "Collection" /t REG_BINARY /d "" /f
Reg.exe add "HKEY_USERS\S-1-5-21-3291519012-2868546545-2290023086-500\Console" /v "WindowPosition" /t REG_DWORD /d "9830700" /f
Exit
+++++++++++++++++++++++++++++++++
上面的空行有简单的办法去除吗?
作者: idwma    时间: 2022-2-9 18:21

斜杠\在正则里用于转义,加上/l参数关掉正则解析
  1. @echo off
  2. findstr /l /v /g:需要删除内容1.txt "a.txt" >"c.txt"
  3. pause >nul
复制代码

作者: flashercs    时间: 2022-2-9 18:24

  1. findstr /L /v /g:
复制代码

作者: yyz219    时间: 2022-2-9 18:56

回复 3# idwma


    感谢上面两位朋友
@Echo Off

Reg.exe add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MpsSvc\Parameters\PortKeywords\DHCP" /v "Collection" /t REG_BINARY /d "" /f
Reg.exe add "HKEY_USERS\S-1-5-21-3291519012-2868546545-2290023086-500\Console" /v "WindowPosition" /t REG_DWORD /d "9830700" /f
Exit

Pause & Exit—————————————————————这个还没有删除掉
作者: qixiaobin0715    时间: 2022-2-10 10:15

本帖最后由 qixiaobin0715 于 2022-2-10 10:18 编辑

代码中最好少用中文字符,容易出错:
  1. @echo off
  2. findstr /v /l /g:b.txt "a.txt"|findstr .
  3. pause
复制代码

作者: yyz219    时间: 2022-2-10 11:28

回复 6# qixiaobin0715


    还是有 Pause & Exit   非常感谢
作者: yyz219    时间: 2022-2-10 11:35

回复 6# qixiaobin0715


    原来这样可以去空行,非常感谢
作者: qixiaobin0715    时间: 2022-2-10 12:37

回复 7# yyz219
我这里没有问题,测试结果如下:
  1. C:\Users\Administrator\Desktop\test1>type a.txt b.txt test.bat
  2. a.txt
  3. @Echo Off
  4. Title Reg Converter v1.1 & Color 1A
  5. cd %systemroot%\system32
  6. call :IsAdmin
  7. REM ; 由 Total Uninstall 产生
  8. REM ;【窗口位置:“左300”、“上150”】
  9. Reg.exe add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MpsSvc\Parameters\PortKeywords\DHCP" /v "Collection" /t REG_BINARY /d "" /f
  10. Reg.exe add "HKEY_USERS\S-1-5-21-3291519012-2868546545-2290023086-500\Console" /v "WindowPosition" /t REG_DWORD /d "9830700" /f
  11. Exit
  12. :IsAdmin
  13. Reg.exe query "HKU\S-1-5-19\Environment"
  14. If Not %ERRORLEVEL% EQU 0 (
  15. Cls & Echo You must have administrator rights to continue ...
  16. Pause & Exit
  17. )
  18. Cls
  19. goto:eof
  20. b.txt
  21. Title Reg Converter v1.1 & Color 1A
  22. cd %systemroot%\system32
  23. call :IsAdmin
  24. REM ; 由 Total Uninstall 产生
  25. REM ;【窗口位置:“左300”、“上150”】
  26. :IsAdmin
  27. Reg.exe query "HKU\S-1-5-19\Environment"
  28. If Not %ERRORLEVEL% EQU 0 (
  29. Cls & Echo You must have administrator rights to continue ...
  30. Pause & Exit
  31. )
  32. Cls
  33. goto:eof
  34. test.bat
  35. @echo off
  36. findstr /v /l /g:b.txt "a.txt"|findstr .
  37. pause
  38. C:\Users\Administrator\Desktop\test1>test.bat
  39. @Echo Off
  40. Reg.exe add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MpsSvc\Parameters\PortKeywords\DHCP" /v "Collection" /t REG_BINARY /d "" /f
  41. Reg.exe add "HKEY_USERS\S-1-5-21-3291519012-2868546545-2290023086-500\Console" /v "WindowPosition" /t REG_DWORD /d "9830700" /f
  42. Exit
  43. 请按任意键继续. . .
复制代码

作者: yyz219    时间: 2022-2-10 12:51

本帖最后由 yyz219 于 2022-2-10 12:59 编辑

@echo off
findstr /v /l /g:b.txt "a.txt"|findstr .
pause
++++++++++++++++++++++++++++
a.txt的内容不会变化
必须
@echo off
findstr /v /l /g:b.txt "a.txt"|findstr . >c.txt
pause

作者: yyz219    时间: 2022-2-10 13:04

b.txt中,去掉 Pause & Exit左边的空格就可以
作者: yyz219    时间: 2022-2-10 14:18

本帖最后由 yyz219 于 2022-2-10 14:42 编辑

回复 3# idwma
最终解决方案:
@echo off
findstr /I  /v /L /g:需要删除内容1.txt "a.txt"|findstr . >c.txt
c.txt
exit
+++++++++++++++++++++++++++++++
加参数  /L————————解决斜杠问题我已经明白

再加参数  /I——————就能完美解决问题

能够讲解一下为什么吗?
++++++++++++++++++++++++
作者: qixiaobin0715    时间: 2022-2-12 10:05

在cmd控制平台中:findstr /? 回车
作者: yyz219    时间: 2022-2-12 10:14

在cmd控制平台中:findstr /? 回车
qixiaobin0715 发表于 2022-2-12 10:05


我知道/I 指定搜索不分大小写。——————————————————问题是这里跟大小写有什么关系?
作者: qixiaobin0715    时间: 2022-2-12 10:23

本帖最后由 qixiaobin0715 于 2022-2-12 10:24 编辑

回复 14# yyz219
我测试加不加/i都没问题(win10系统),保留空格也行,见9楼。难道与系统有关。




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