Batch file “逃跑”;FOR语句中findstr中使用的符号
是的,我尝试过最流行的解决方案 他们帮不了多少忙;只是重申了我已经知道的 这项工作:Batch file “逃跑”;FOR语句中findstr中使用的符号,batch-file,cmd,Batch File,Cmd,是的,我尝试过最流行的解决方案 他们帮不了多少忙;只是重申了我已经知道的 这项工作: @echo on set var=APPENDTEXT for /f "delims=" %%a in ('dir *.* /b /a-d') do ren "%%a" "%%~na%var%%%~xa" pause 但是我试着把它细化一点,就像这样 @echo on set var=APPENDTEXT for /f "delims=" %%a in ('dir *.* /b /a-d | findstr
@echo on
set var=APPENDTEXT
for /f "delims=" %%a in ('dir *.* /b /a-d') do ren "%%a" "%%~na%var%%%~xa"
pause
但是我试着把它细化一点,就像这样
@echo on
set var=APPENDTEXT
for /f "delims=" %%a in ('dir *.* /b /a-d | findstr /v /i "\.bat$" ') do ren "%%a" "%%~na%var%%%~xa"
pause
这样我就不会重命名批处理文件本身但后来一切都搞砸了。
我试过好几次,没有一次能像我希望的那样有效
其他信息:根据我收集的信息,当“内部搜索”本身位于其他内容中时,会出现逃逸问题。我 尝试使用“”和/“以及^”进行转义,但无效。
这些方法有什么问题吗
示例:
a、 dat-->aAPPENDTEXT.dat
plesework.txt-->pleseworkappendtext.txt
您已正确转义了
findstr
语句,但仍需要转义管道
符号。findstr
→ <代码>^ findstr
@echo on
set var=APPENDTEXT
for /f "delims=" %%a in ('dir *.* /b /a-d ^| findstr /v /i "\.bat$" ') do ren "%%a" "%%~na%var%%%~xa"
pause
您已正确转义了
findstr
语句,但仍需要转义管道
符号。findstr
→ <代码>^ findstr
@echo on
set var=APPENDTEXT
for /f "delims=" %%a in ('dir *.* /b /a-d ^| findstr /v /i "\.bat$" ') do ren "%%a" "%%~na%var%%%~xa"
pause
你需要跳出管道。你也可以去掉findstr,只在重命名之前与文件扩展名进行比较。
for/f“delims=“%%a in('dir*/b/a-d')do IF/I不是“%%xa”==”。bat“ren”%%a“%%~na%var%%xa”
你也可以通过锁定批处理文件nul(for%%a in)do ren来去掉比较%%a“%%~na%var%%~xa”)
除上述内容外,为了满足您的需求,为什么要简单地排除扩展,请使用^ FindStr/VIXC:“%~nx0”
。我建议使用命令行for/f“delims=“%%a In('dir*/b/a-d”)do if/I非“%~nx0”==“%~nxa ren”%%a”%~na%var%%~xa“
忽略运行此命令行的批处理文件。您需要转义管道。您还可以删除findstr,只需在重命名之前与文件扩展名进行比较即可for/f“delims=“%%a in('dir*/b/a-d')do IF/I NOT“%%~xa”=”.bat“ren”%%a”“%%~na%var%%~xa”
您还可以通过锁定批处理文件nul(for%%a in(*)do ren%%a”“%%~na%var%%~xa“
来消除比较。除了上述内容之外,为了满足您的要求,为什么只需排除扩展名,使用^ FindStr/VIXC:“%~nx0”
。我建议对/f“delims=“%%a in('dir*/b/a-d')do if/I非“%~nx0”=”%%~nxa“ren”%%a”“%%~na%var%%~xa使用命令行
忽略运行此命令行的批处理文件。是否进行了测试?我将如何继续改进条件,以排除文件名末尾已包含APPENDTEXT的所有文件。我应该在这里换什么for/f“delims=“%%a in('dir*/b/a-d^ findstr/v/i“\.bat$”)do ren“%%a”“%%na%var%%xa”
。你能帮我一下吗?@SiddhantRimalfor/f“delims=“%%a in('dir*/b/a-d^ findstr/v/i“\.bat$”;findstr/v/C:“APPENDTEXT””)do ren“%%a”“%%~na%var%%xa”
@SamDenty我见过。我又一次遇到了管道问题。谢谢你的意见。非常感谢。您对此进行了测试吗?我将如何继续改进条件,以排除所有文件名末尾已包含APPENDTEXT的文件。我应该在这里换什么for/f“delims=“%%a in('dir*/b/a-d^ findstr/v/i“\.bat$”)do ren“%%a”“%%na%var%%xa”
。你能帮我一下吗?@SiddhantRimalfor/f“delims=“%%a in('dir*/b/a-d^ findstr/v/i“\.bat$”;findstr/v/C:“APPENDTEXT””)do ren“%%a”“%%~na%var%%xa”
@SamDenty我见过。我又一次遇到了管道问题。谢谢你的意见。非常感谢。