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

[文本处理] 批处理命令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
复制代码
我是小白,希望老师多多帮助

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

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

TOP

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


我知道/I 指定搜索不分大小写。——————————————————问题是这里跟大小写有什么关系?
我是小白,希望老师多多帮助

TOP

在cmd控制平台中:findstr /? 回车
1

评分人数

TOP

本帖最后由 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——————就能完美解决问题

能够讲解一下为什么吗?
++++++++++++++++++++++++
我是小白,希望老师多多帮助

TOP

b.txt中,去掉 Pause & Exit左边的空格就可以
我是小白,希望老师多多帮助

TOP

本帖最后由 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
我是小白,希望老师多多帮助

TOP

回复 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. 请按任意键继续. . .
复制代码

TOP

回复 6# qixiaobin0715


    原来这样可以去空行,非常感谢
我是小白,希望老师多多帮助

TOP

回复 6# qixiaobin0715


    还是有 Pause & Exit   非常感谢
我是小白,希望老师多多帮助

TOP

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

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

评分人数

    • yyz219: 还是有 Pause & Exit 非常感谢技术 + 1

TOP

回复 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—————————————————————这个还没有删除掉
我是小白,希望老师多多帮助

TOP

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

评分人数

微信:flashercs
QQ:49908356

TOP

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

评分人数

    • yyz219: 还有一行没有删除技术 + 1

TOP

奇怪,将需要删除内容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
+++++++++++++++++++++++++++++++++
上面的空行有简单的办法去除吗?
我是小白,希望老师多多帮助

TOP

返回列表