2013-09-24 34 views
0

嗨我正在使用下面的腳本根據搜索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 
) 

}

+0

'!'不是一個特殊的字符,除非你有延遲擴展啓用,你沒有上面。只是爲未來的讀者指出這一點。 – foxidrive

回答

1

如果延遲擴展開啓和代碼的任何給定的行包含!字符之內的任何地方,那麼如果你想要一個字符串文字,那麼需要以下不尋常的轉義序列:

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

如果延遲擴展已啓用,但行不包含!,然後^通常轉義:

unquoted^= ^^ 
quoted^ =^

如果延遲擴展被禁用,則!不需要越獄,並^通常轉義:

unquoted ! = ! 
quoted ! = ! 
unquoted^= ^^ 
quoted^ =^
+0

很多謝謝,我添加了延遲擴展,並使用^^作爲前綴!它工作得很好.... {findstr/i/m%searchid%C:\ ABC ^^!DEF \ *。xml} ....很多謝謝...... :) – Abhijit

相關問題