如何使用批处理程序处理文件夹名称中的特殊字符(!)

时间:2013-09-24 02:13:49

标签: batch-file

您好我使用以下脚本根据搜索ID从文件夹中过滤XML文件,并将XML文件名返回到export.txt。

如果文件夹名称不包含特殊字符(!),则可以正常工作。在我的情况下文件夹将有(!)。任何人都可以帮忙,如何处理这个sinario。如何处理文件夹名称中的特殊字符。

您能提供样品工作代码吗?

{

@echo off
echo. >export.txt
set searchid="<sh:InstanceIdentifier>SBDH_4539594000005_tt7x7c71fof8d9adenhr<"
for /f %%a in ('findstr /i /m %searchid% C:\ABC!DEF\*.xml') do (
  echo %%a >>export.txt
) 

}

2 个答案:

答案 0 :(得分:1)

尝试此页面作为参考:http://www.robvanderwoude.com/escapechars.php

! = ^^!

答案 1 :(得分:1)

如果启用了延迟扩展并且任何给定的代码行在其中的任何位置包含!字符,那么如果您需要字符串文字,则需要以下不常见的转义序列:

unquoted ! = ^^!
quoted !   = ^!
unquoted ^ = ^^^^
quoted ^   = ^^

如果启用了延迟展开但行不包含!,则^会正常转义:

unquoted ^ = ^^
quoted ^   = ^

如果停用了延迟展开,那么!不需要转义,^会正常转义:

unquoted ! = !
quoted !   = !
unquoted ^ = ^^
quoted ^   = ^