2014-12-03 24 views
0
@echo off 
set files=InstallSlinger27.bat:Stash.txt 

for /F "delims=:" %%i IN ("%files%") DO (
    ECHO %%i 
    if exist %%i (
    echo EXIST 
) else (
    echo DO NOT EXIST 
) 
) 

我希望批處理文件檢查文件InstallSlinger27.bat是否存在,然後檢查文件Stash.txt是否存在。對於/ F只對一個字符串段進行循環操作

然而,輸出

InstallSlinger27.bat 
EXIST 

它不會對第二個文件做驗證。

我嘗試了一些東西,並且在過去的工作環境中做了循環。我不想檢查%%然後是%% j,因爲文件列表可能會增加。

回答

2
@ECHO OFF 
SETLOCAL 
set files=InstallSlinger27.bat:Stash.txt 

FOR %%a IN ("%files::=","%") DO (
IF EXIST %%a (ECHO %%a exists) else (ECHO %%a missing) 
) 
GOTO :EOF 

雖然我建議你重新考慮你的,因爲:分離器的選擇可以完整的文件名中出現。

+0

我很難理解'(「%files :: =」,「%」)'部分你能解釋一下嗎? '''做什麼? – 2014-12-04 00:16:04

+1

@JohnDOE用''替換'',''爲':'然後用'''圍繞整個字符串,因此's1:s2'變成'「s1」,「s2」'然後被解析爲一系列被引用的字符串用逗號。毫無疑問,空格可以代替逗號運行。 – Magoo 2014-12-04 00:29:24

+0

我試着使用pipe'|'作爲分隔符,因爲逗號也是有效的文件名字符。 – Magoo 2014-12-04 12:22:41

相關問題