2016-05-09 54 views
1

我想創建一個批處理文件,它將返回一個文件位置,包括分區(或驅動器),以便我可以在批處理文件中使用它進行更多操作。 文件名是已知的,但分區和目錄未知。那可能嗎?批處理文件跨分區的文件搜索

+1

編輯你的問題,併發布一些你已經嘗試過的代碼! – Hackoo

+3

要在單個驅動器上搜索某個文件, G。 'C:',你可以使用'where/R C:\「filename.ext」';要在多個驅動器上執行此操作,可以使用'for'循環,例如(C:D:E:F :)中的%% D執行@where/R %% D \「filename.ext」'... – aschipfl

回答

0

你可以嘗試這樣的事情:

@echo off 
Title Searching for file by name 
Mode con cols=75 lines=3 
cls & color 0A 
Set SearchResult=SearchResult.txt 
If Exist %SearchResult% Del %SearchResult% 
echo(
set /P "FileName=Type the file name for looking for = " 
Setlocal EnableDelayedExpansion 
for /f "tokens=2" %%i in ('wmic logicaldisk where "drivetype=3" ^|find /i ":"') do (
    Set MyDrive=%%i 
    echo(& cls 
    echo( & echo  Please Wait for moment .... Searching for "%FileName%" on "!MyDrive!\" 
    @where /r !MyDrive!\ "%FileName%" >> %SearchResult% 
) 
Start %SearchResult% 
0

下面的腳本 - 我們稱之爲findfile.bat - 搜索具有給出一個命令行參數的名稱的文件(例如,findfile.bat "lostfile.txt")上本地磁盤和網絡驅動器作爲一個例子:

@echo off 
for /F "skip=1" %%I in (
    'wmic LOGICALDISK WHERE ^(^ 
     DriveType^=3 OR^ 
     DriveType^=4^ 
    ^) GET DeviceID' 
) do (
    for /F "delims=" %%J in ("%%I") do (
     2> nul where /R %%J\ "%~1" 
    ) 
) 

wmic命令用於檢索當前系統上可用的驅動器。在示例中,允許有兩個值DriveType3,表示本地磁盤,而4表示網絡驅動器。您可以根據需要調整過濾器 - 參考站點Win32_LogicalDisk class獲取所有可能的值。要不過濾任何驅動器類型,只需刪除整個WHERE子句,然後使用其餘的wmic命令行wmic LOGICALDISK GET DeviceID