2012-10-17 183 views
0

我已經做過一些小批處理文件,但從未在文件夾中讀取任何所需的文件名。批處理文件,搜索文件夾中的所有文件,然後排序

我需要一個批處理文件,可以爲我排序文件夾。

我需要尋找到一個文件夾中,搜索每個文本文件,它包含的「字符串」,然後將其移動到文件夾接受,如果沒有,將其移動到文件夾被拒絕。

任何想法如何解決這個問題?

我已經使用了以下方法來查找文本。

find /c "string" file 
if %errorlevel% equ 1 goto 

我不知道如何使它搜索文件夾中的每個文件,並且這些文件名稱每天都在變化。

回答

2

在您的問題聲明你說的所有這些文件都.txt文件。因此,我建議使用for loop來遍歷目錄中的每個.txt文件,然後使用findstr來搜索預期的字符串。我在下面發佈的代碼將以這種方式工作。從本質上講,它將目錄更改爲桌面(或文件所在的位置),然後遍歷每個文件並搜索該字符串。所述findstr輸出重定向到nul(爲加快處理速度),並且如果這個成功,則.txt文件被移動到C:\Users\Desktop\SuccessFolder,否則該文件放置在C:\Users\Desktop\FailureFolder。 (請記住搜索"string",原始位置和2個文件夾位置仍然需要設置)我相信這個代碼應該爲你正在努力完成的工作。讓我知道是否需要對代碼進行任何更改=]

@Echo off 
cd /D C:\Users\Desktop 
FOR %%a in (*.txt) do (
findstr /C:"string" "%%a" >nul && move "%%a" "C:\Users\Desktop\SuccessFolder" || move "%%a" "C:\Users\Desktop\FailureFolder") 
+1

+1;但是DO()子句中的每個%% a都應該用引號引起來。如果「字符串」包含空格,也必須使用FINDSTR/C選項。 – dbenham

+0

@dbenham我在原來的答案中做了修改,以反映您提到的問題。 (順便說一句,我希望你能意識到我使用了字符串輸出來nul(用%%和||),這是我從你那裏學到的,謝謝。) –

+0

你幾乎沒有錯。我修正了/ C選項的格式 - '/ C:「string」'。 – dbenham

相關問題