2016-05-09 11 views
1

Ich versuche, eine Batch-Datei zu erstellen, die einen Dateispeicherort einschließlich Partition (oder Laufwerk) zurückgibt, damit ich es für weitere Manipulation in dieser Batchdatei verwenden kann. Der Dateiname ist bekannt, aber die Partition und das Verzeichnis sind nicht bekannt. Ist das möglich?Dateisuche über Partitionen in Batch-Dateien

+1

Bearbeiten Sie Ihre Frage und posten Sie einen Code, den Sie bis jetzt versucht haben! – Hackoo

+3

Um eine bestimmte Datei auf einem einzelnen Laufwerk zu suchen, z. G. 'C:', könnten Sie 'where/R C: \" filename.ext "'; um dies auf mehreren Laufwerken zu tun, könntest du eine 'for'-Schleife verwenden, wie' für %% D in (C: D: E: F :) tu @where/R %% D \ "filename.ext" '... – aschipfl

Antwort

0

Sie können so etwas versuchen:

@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

Die folgende Skript - nennen wir es findfile.bat - sucht nach einer Datei mit dem Namen als Kommandozeilen-Argument angegeben (zum Beispiel findfile.bat "lostfile.txt") auf lokale Festplatten und Netzlaufwerke als Beispiel:

@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" 
    ) 
) 

der wmic Befehl wird verwendet, um die verfügbaren Laufwerke auf dem aktuellen System abzurufen. Im Beispiel sind zwei Werte von DriveType erlaubt: 3, was lokale Festplatten bedeutet, und 4, was Netzlaufwerke bedeutet. Sie können den Filter beliebig anpassen - Referenzstelle Win32_LogicalDisk class für alle möglichen Werte. Um keine Laufwerkstypen zu filtern, entfernen Sie einfach die gesamte WHERE-Klausel und verwenden Sie stattdessen die restliche wmic Befehlszeile wmic LOGICALDISK GET DeviceID.