2015-06-13 129 views
0

我發現本網站上的下面的代碼:如何找到所有不包含字符串的文件?

@echo off 
setlocal 
set "rootFolder=c:\yourRootPath" 
set "fileMask=*.txt" 
set "outFile=missing.txt" 

>"%outFile%" (
    for /d %%D in ("%rootFolder%") for %%F in ("%%D\%fileMask%") do (
    findstr /nbr "$O..*\.MIN%%" "%%F" | findstr /bl "1:" >nul || echo %%F 
) 
) 

然而,當我運行該批處理文件,我收到以下錯誤:「爲是意外的在這個時候」

我的研究表明,這通常是由於不使用雙%%引起的,但顯然情況並非如此。 我想這是簡單的,但我不能解決它,請任何提示?

+1

您的第一個'for'語句沒有附帶的'do'。對於VBA類比,這就像沒有'then'的'if'。 – SomethingDark

+0

多好奇 - [原創](http://stackoverflow.com/a/14386689/2564301)也有這個。 – usr2564301

回答

0

這個方法應該運行得更快:

@echo off 
setlocal 

set "rootFolder=c:\yourRootPath" 
set "fileMask=*.txt" 
set "outFile=%~P0missing.txt" 

cd "%rootFolder%" 
findstr /S /M /B /R "$O..*\.MIN%%" "%fileMask%" > temp.tmp 
(dir /S /A-D /B "%fileMask%" | findstr /V /G:temp.tmp) > "%outFile%" 
del temp.tmp 

missing.txt文件存儲在批處理文件中的同一個文件夾,那一定不是搜索文件夾中的文件!

相關問題