2012-07-25 96 views
0
set SourceSCMPasswd=abc 
set HATCONTESTING=yes 


for /f %%a in ('dir /AD /b') do VssConverter.exe analyze %%a\settings.xml & move VSSAnalysisReport.xml %%a & move usermap.xml %%a 

我知道它執行以下命令: 1)運行VssConverter.exe分析上%%一個\的settings.xml 2)移動VSSAnalysisReport.xml至%%一個 3)移動到usermap.xml% %a有人可以請解釋這個CMD批處理文件嗎?

問題是,當目錄中的文件夾名稱中有一個空格時,例如AMEX Mailer,變量%% a僅包含AMEX,但不包含第二部分。我如何讓它包含全名?

+0

'help for' has you answer you – wmz 2012-07-25 20:32:30

回答

1

默認爲FOR/F標記分隔符是<tab><space>。您希望將整個字符串保存爲單個令牌,因此您不需要分隔符(「DELIMS =」)默認的EOL選項是;。任何以;開頭的行都將被忽略。雖然不太可能,但文件名可能以;開頭。你想將EOL設置爲某個不能出現在名字中的字符。好的候選人是:,*?

for /f "eol=: delims=" %%A in ... 
+0

OP使用'for/f'來列出/處理目錄。對於/ D更好嗎? – wmz 2012-07-25 20:53:09

+0

這不是我的代碼,我只是給這個批處理文件運行。我真的不知道這些是如何工作的 – 2012-07-25 21:02:57

+0

謝謝dbenham我在/ f之後添加了這個段,它的工作很完美 – 2012-07-25 21:03:35

0

試試這個:

for /f "delims=" %%a in ... 
+0

這並不能解決任何問題。我假設你認爲\ n將會被解讀爲一個新的字符。這不成批處理。它會打破任何「n」或「\」字符,這絕對不是OP想要的。反斜槓沒問題,但肯定不是「n」。 – dbenham 2012-07-25 20:39:11

+0

你是對的。我沒有注意到在我的測試中有幾個文件名被打破了'n'。我正在改變delim的答案= – 2012-07-25 21:06:48

相關問題