转义FOR语句中的findstr中使用的符号

时间:2017-02-13 16:50:38

标签: batch-file cmd

是的,我尝试过最流行的解决方案(1) (2)

他们没多大帮助;刚刚重申我已经知道的事情。

这有效:

@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

因此我最终不会重命名批处理文件本身。 但随后一切都搞砸了。

我已经尝试了几个approaches for escaping,没有一个像我想要的那样工作。

  

附加信息:
从我收集到的内容中,当它本身在其他内容中时,逃避“内部发现是一个问题。我   试图用“”和/“与^”逃避无效。

我在做什么
  这些方法出了什么问题?

     
      
  1. ('dir / b / a-d | findstr / v / i“”。bat $“”')
  2.   
  3. ('dir / b / a-d | findstr / v / i \“。bat $ \”')
  4.   
  5. ('dir / b / a-d | findstr / v / i ^“。bat $ ^”')
  6.         

    逃避它的正确方法是什么?   *

我想要它做什么?

简单地说,

  

当我在文件夹中运行this.bat文件时,我想要里面的所有文件   它用APPENDTEXT重命名(蝙蝠文件本身除外)

例如:
  a.dat - > aAPPENDTEXT.dat
pleasework.txt - > pleaseworkAPPENDTEXT.txt

1 个答案:

答案 0 :(得分:2)

您已正确转义findstr声明,但管道|符号仍需要转义。

| findstr^| findstr < / p>

@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