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
这样我就不会重命名批处理文件本身但后来一切都搞砸了。

我试过好几次,没有一次能像我希望的那样有效

其他信息:
根据我收集的信息,当“内部搜索”本身位于其他内容中时,会出现逃逸问题。我 尝试使用“”和/“以及^”进行转义,但无效。

这些方法有什么问题吗

  • ('dir./b/a-d | findstr/v/i'.bat$“”)
  • ('dir./b/a-d | findstr/v/i\“.bat$\”)
  • ('dir./b/a-d | findstr/v/i^.bat$^')
  • 逃避它的正确方法是什么? *

    我想要它做什么? 简言之

    当我在文件夹中运行此.bat文件时,我希望所有文件都在其中 将其重命名为追加文本(bat文件本身除外)

    示例:
    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”
    。你能帮我一下吗?@SiddhantRimal
    for/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”
    。你能帮我一下吗?@SiddhantRimal
    for/f“delims=“%%a in('dir*/b/a-d^ findstr/v/i“\.bat$”;findstr/v/C:“APPENDTEXT””)do ren“%%a”“%%~na%var%%xa”
    @SamDenty我见过。我又一次遇到了管道问题。谢谢你的意见。非常感谢。