2015-07-05 33 views
1

我想找到一種方法來搜索特定路徑或驅動器中的特定目錄,並將它們打印到文件以供進一步使用。批量搜索目錄 - 將整個路徑存儲在一個文件中

例如,在一個結構,如:

D:\Dir1\Dir2\Wanteddir 
D:\Dir1\Dir3\Wanteddir 
D:\Dir1\Dir4\Wanteddir 

應該創建一個文件「的Result.txt」與恰好與上述相同的圖案。

現在我創建了一個從頭開始的腳本和對現有腳本的一些研究。 並得到了這個工作。

@echo off 
setlocal enabledelayedexpansion 

set "tmp_result_file=temp.txt" 
set "result_file=result.txt" 

if exist %tmp_result_file% del %tmp_result_file% 
if exist %result_file% del %result_file% 

dir d: /s > temp.txt 

set /p searchdir=Please enter the directory name: 

for /f "tokens=3* delims= " %%i in ('FINDSTR /C:"\%searchdir%" %tmp_result_file%') do echo %%i >> %result_file% 
for /f "tokens=1,2,3 delims= " %%a in ('find /C "\%searchdir%" %result_file%') do set "amount=%%c" 

echo. 

Echo The list of found directories is %amount% lines long and contains  following paths. 
echo. 
type result.txt 

現在有了這個代碼的問題是,它「捕獲」,其中包含輸入的單詞的所有目錄。在目錄名稱的開頭。

所以,如果我只輸入「通緝令」,而不是「Wanteddir」的劇本會搜索所有與「通緝令」

例如開頭的目錄:

D:\Dir1\Dir2\Wanteddir 
D:\Dir1\Dir3\Wanteddir 
D:\Dir1\Dir4\Wanteddir 
D:\Wanted\Exampledir 
D:\Dir1\Wantedtest\Exampledir 
etc.. 

我將不勝感激任何建議對於這個問題。 也許你也可以建議一些更可靠的方法來做這樣的搜索。 另一個問題是,「界限」是一個空間。所以如果有人在目錄名稱中使用空格,輸出也會有些垃圾。

thx到目前爲止。

+0

與您所問的問題無關,但您認爲沒有擴展名的任何名稱始終是一個文件夾,但這不一定是正確的。 – dbenham

回答

0

完全匹配

dir /s /b /ad wanted 

包含希望

dir /s /b /ad *wanted* 

放在一個文件在桌面

dir /s /b /ad *wanted* > "%userprofile%\desktop\Results.txt" 

上始終看dirforfiles做文件列表和搜索。

+0

-1,您應該在發佈之前總是測試您的代碼! (我必須承認,我有時候沒有這樣做,而且我的帖子經常在我沒有測試的時候受到影響)。 OP明確表示他正在尋找一個沒有通配符的特定文件夾名稱。你的解決方案似乎合乎邏輯,但它根本行不通。 – dbenham

0

無需首先獲取所有文件/文件夾的列表 - 您可以直接跳到答案。

有人可能會認爲dir /b /s /ad d:wantedDir會工作。

不幸的是,如果你在一個文件夾的名稱做了DIR沒有任何通配符,則DIR命令假設你想該文件夾內看,並沒有列出具體的文件夾名稱:-(

的解決方案是添加通配符,但然後通過管道將結果FINDSTR淘汰不需要的文件夾:

dir /b /s /ad d:wantedDir* | findstr /iec:"\\wanteddir" >result.txt 

/I選項使得搜索忽略大小寫

/E選項使得搜索MATC h只是每行的結尾。

/C選項使搜索成爲文字搜索,並允許搜索空間。

前導\\表示單個\,它是一個奇怪癖,字面FINDSTR搜索有時需要被轉義爲\\反斜槓。

相關問題