2016-08-02 34 views
0

Ich versuche, alle Laufwerke nach einem Dateinamen zu suchen. Bei der Verwendung des dir Befehl allein alles gut geht:Variablen und Platzhalter in Batch und cmd.exe

C:\>dir /s C:\*blabla* 
Volume in drive C has no label. 
Volume Serial Number is 2AB1-3FBD 

    Directory of C:\Users\Administrator\Desktop 

02/08/2016 11:21     0 blabla.txt 
      1 File(s)    0 bytes 

Total Files Listed: 
      1 File(s)    0 bytes 
      0 Dir(s) 28?369?825?792 bytes free 

Aber wenn es auf einer Schleife fehl es:

FOR /F "skip=1 delims=" %x in ('wmic logicaldisk get caption') do dir /s %x*blabla* 

*blabla* Administrator\Desktop>dir /s A:  
The device is not ready. 

*blabla* Administrator\Desktop>dir /s C:  
Volume in drive C has no label. 

Kann mir jemand helfen?

+0

ich das nicht scheinen, zu replizieren. Lies ich richtig, dass die einzige Zeile, die erscheint, wenn 'dir/s C:' aufgerufen wird, "Volume in Laufwerk C hat keine Beschriftung" oder gibt es mehr? – SomethingDark

+0

probiere _FOR/F "skip = 1 delims ="% x in ('wmic logicaldisk get caption') tu dir/s% x \\ * blabla * _. Das _delims_ hat ein Leerzeichen als zusätzliches Token. außerdem habe ich einen umgekehrten Schrägstrich in _% x \\ * blabla * _ für _logicaldisk hinzugefügt caption_ gibt nur Laufwerksnamen und Doppelpunkt zurück, nicht den Backslash – elzooilogico

+0

das ist besser 'FOR/F" skip = 1 delims = "% x in ('wmic logicaldisk hole code ') echo (% x | finde ":"> NUL && dir/s% x \ * blabla * ' – elzooilogico

Antwort

0

Vielen Dank für Ihre Hilfe und tolle Ideen zu anderen Skripten.

Wo die Antwort, die ich suchte:

C:\>FOR /F "skip=1 delims= " %x in ('wmic logicaldisk get caption') do @where /R %x *blabla* 2>NULL 
C:\Users\Administrator\Desktop\blabla.txt 
+0

Hinweis Das 'where' sieht nur in den Ordnern der'% path% 'Variablen aus. Wenn Ihre Datei woanders ist, benötigen Sie eine' dir' Lösung (ich würde den '/ b' Schalter hinzufügen) – Stephan