2013-04-24 58 views
4

我有一個簡單的批處理文件,將循環所有* Test.htm文件並複製它們。一些文件將包含一個我不想複製的字符串。批次For循環排除文件名包含

FOR /R "C:\" %%g IN (*Test.htm) DO (
echo %%g 
) 

我想在僞代碼是什麼:

@echo off 
FOR /R "C:\" %%g IN (*Test.htm) DO ( 
    if %%g contains "Exclude" do nothing 
else 
    copy... 
) 
+0

你的意思是文件本身包含字符串還是文件名包含字符串? – Magoo 2013-04-24 13:59:11

+0

你確定你的意思是'* Test.htm'而不是'* \ Test.htm'? – Endoro 2013-04-24 14:38:24

回答

10

對於文件名:

@echo off 

FOR /R "C:\" %%g IN (*Test.htm) DO ( 
    (Echo "%%g" | FIND /I "Exclude" 1>NUL) || (
     Copy "%%g"... 
    ) 
) 

對於文件的內容:

@echo off 

FOR /R "C:\" %%g IN (*Test.htm) DO ( 
    (Type "%%g" | FIND /I "Exclude" 1>NUL) || (
     Copy "%%g"... 
    ) 
) 
+0

LOOP內多重條件的優秀解決方案!!!!!!! – 2016-08-03 09:40:35

+0

什麼是1? – DaveBoltman 2016-09-16 13:38:48

+0

@DaveBoltman要重定向到NULL的命令標準流的索引。您可以在維基百科上閱讀更多內容 - 免費百科全書:https://en.wikipedia.org/wiki/Standard_streams – ElektroStudios 2016-09-16 16:37:41