lunomach

Wmic datafile Path Problem

Hallo Forenmitglieder,
ich bin neu hier in diesem Forum habe jedoch schon viele Beiträge zu allen möglichen Problemen gelesen. Ich habe hier schon viel Hilfe gefunden.

nun zu meinem Problem. Ich möchte mit wmic eine Abfrage auf einen Client im Netz erstellen der mir die Dateien anzeigen soll die größer als 100 kb sein sollen.
der Befehl dazu ist eigentlich auch klar.
wmic /node:"PC" datafile where "Path='\\Dokumente und Einstellungen\\' and Filesize>'100000'" get name,Filesize

Der Befehl stolpert über den Pfad mit den Leerstellen (Dokumente und Einstellungen). Ersetze ich den Pfad z.B. mit driver erhalte ich sofort ein Ergebnis. Ich habe dann mit dieser Eingabe versucht ("Path='\\'Dokumente und Einstellungen'\\' ....) eine Ausgabe zu erzeugen. Auch weitere Variationen mit " oder % führten zu keinem Erfolg.
Jetzt weiss ich nicht mehr weiter. Habe mich da irgendwie verrannt.
Wäre schönwenn mir jemand helfen könnte.

Gruß
Norbert
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 183139

Url: https://administrator.de/forum/wmic-datafile-path-problem-183139.html

Ausgedruckt am: 05.05.2025 um 00:05 Uhr

106009
106009 05.04.2012 um 10:34:46 Uhr
Goto Top
Hi,

Zitat von @lunomach:
Der Befehl stolpert über den Pfad mit den Leerstellen (Dokumente und Einstellungen).
Nöö, tut er nicht, der Befehl ist richtig geschrieben. Notfalls kannst du auch den kurzen Dateinamen 'DOKUME~1' verwenden.

Welches "Ergebnis" wird dir denn angezeigt und welches OS wird verwendet?

Gruß
lunomach
lunomach 05.04.2012 um 11:01:58 Uhr
Goto Top
Hallo,

ich verwende XP. Es kommt die Meldung: keine Instanzen verfügbar. Sowohl mit dem vollen Pfad (Dokumente und Einstellungen) als auch mit Dokume~1.


Gruß
Penny.Cilin
Penny.Cilin 05.04.2012 um 11:12:38 Uhr
Goto Top
Moin, unter Windows 7 Home Premium wird bei
wmic /node:"PC" datafile where "Path='\\Usrs\\' and Filesize>'100000'" get name,Filesize
der gleiche Fehler angezeigt.

Wenn Du die Abfrage foldendermaßen erweiterst, funktioniert es. Wobei <username> durch eine gültige benutzerkennung zu ersetzen ist.

wmic /node:"PC" datafile where "Path='\\Dokumente und Einstellungen\\username' and Filesize>'100000'" get name,Filesize

Ist allerdings unschön, wenn man mehrere benutzerkonten abfragen will/muss.
lunomach
lunomach 05.04.2012 um 11:22:17 Uhr
Goto Top
Hallo,

klappt leider auch nicht. Fehlermeldung: Keine Instanzen verfügbar.

Gruß
Penny.Cilin
Penny.Cilin 05.04.2012 um 11:26:23 Uhr
Goto Top
Hm, komisch, wenn ich den Befehl folgendermaßen absetze:

 wmic datafile where "Path='\\Dokumente und Einstellungen\\test\\' and Filesize>'10000'" get Name, Filesize   

bekomme ich auch unter Windows XP inkl. SP3 eine Rückmeldung.

EDIT: Das Benutzerkonto Test existiert auf meinem PC.
lunomach
lunomach 05.04.2012 um 11:32:10 Uhr
Goto Top
Hallo Penny Cilin,

es fehlten hinter dem username die zwei \\ . Manchmal siehr man den Wald vor lauter Bäumen nicht.
Jetzt funktioniert es.


Danke! face-smile

Gruß
Norbert
106009
106009 05.04.2012 um 11:32:45 Uhr
Goto Top
"Keine Instanzen verfügbar" kannst du mit "Keine Datei(en) gefunden" übersetzen.

Wenn im Pfad (ohne Unterverzeichnisse !) nichts drin ist, ist das normal.
Willst du die Unterverzeichnisse durchsuchen, musst du sie angeben. Einen rekursiven Befehl zu "Path" habe ich noch nicht gefunden.
Allerdings kannst du dir vorher sämtliche Pfade ausgeben lassen:
WMIC FSDir WHERE "DRIVE='C:'" GET  path, filename  
bzw.
WMIC FSDir WHERE "Drive='C:'" get eightdotthreefilename  
und dir daraus eine neue Abfrage basteln. face-smile

Gruß
Penny.Cilin
Penny.Cilin 05.04.2012 um 12:46:09 Uhr
Goto Top
Wenn man die Unterverzeichnisse rekursiv durchsuchen woll, dann evtl. in Verbindung mit einer FOR-Schleife?
Ich bin nicht so der Bätschmän, ok in REXX würde ich es hinbekommen. Allerdings ist dies nur auf meinen Maschinen installiert.

Um es unter Windows durchzuführen bietet sich Windows Script Host oder Powershell an. oder?
106009
106009 05.04.2012 um 13:08:00 Uhr
Goto Top
Ja, kann mit dem Scripting Host oder der Powershell sicher auch erledigen, es geht aber auch einfach mit Batch:

for /f "tokens=* delims=" %%ain ('WMIC /node:PC FSDir WHERE "Drive='C:'" get eightdotthreefilename') do @echo %%a  

:: An Stelle von @echo %%a verwendet man dann die bisherige Abfrage und setzt für Path= Path="\\%%a\\" ein.  

Ungetestet, testen muss du selbst. face-smile
Penny.Cilin
Penny.Cilin 05.04.2012 um 14:44:46 Uhr
Goto Top
Sorry funktioniert irgendwie nicht richtig.
106009
106009 05.04.2012 um 20:35:29 Uhr
Goto Top
@penny.cillin

Den Beitrag hatte ich noch kurz gelesen, bevor ich wegmusste. So wie du das zuerst gepostet hattest, kann das auch nicht funktionieren, du hast ja einfach die Befehlszeile 2 x hintereinander gebracht und beim zweiten Mal nur "get name, filesize" hinzugefügt.

Hier ein getesteter Lösungsvorschlag:
::@echo off
set "comp=%COMPUTERNAME%"  
set "lw=c:"  
set "checksize=100000"  
for /f "tokens=* delims=" %%a in ('WMIC /node:%comp% FSDir where "drive='%lw%'" get eightdotthreefilename') do call :Process %%~da %%~pa  
goto :eof

:Process
set dr=%1
set pfad=%2
set pfad=%pfad:\=\\%
@echo %dr%  %pfad%
if [%dr%]==[%lw%] wmic datafile where "path='%pfad%' and Filesize >'%checksize%'" get filesize, name  

Du musst nur die korrekten Variablen einsetzen.
Wenn's läuft, nimmst du die beiden Doppelpunkte vor @echo off weg.

Gruß