lunomach
Goto Top

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

Content-Key: 183139

Url: https://administrator.de/contentid/183139

Printed on: April 25, 2024 at 08:04 o'clock

Mitglied: 106009
106009 Apr 05, 2012 at 08:34:46 (UTC)
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ß
Member: lunomach
lunomach Apr 05, 2012 at 09:01:58 (UTC)
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ß
Member: Penny.Cilin
Penny.Cilin Apr 05, 2012 at 09:12:38 (UTC)
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.
Member: lunomach
lunomach Apr 05, 2012 at 09:22:17 (UTC)
Goto Top
Hallo,

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

Gruß
Member: Penny.Cilin
Penny.Cilin Apr 05, 2012 at 09:26:23 (UTC)
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.
Member: lunomach
lunomach Apr 05, 2012 at 09:32:10 (UTC)
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
Mitglied: 106009
106009 Apr 05, 2012 at 09:32:45 (UTC)
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ß
Member: Penny.Cilin
Penny.Cilin Apr 05, 2012 at 10:46:09 (UTC)
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?
Mitglied: 106009
106009 Apr 05, 2012 at 11:08:00 (UTC)
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
Member: Penny.Cilin
Penny.Cilin Apr 05, 2012 at 12:44:46 (UTC)
Goto Top
Sorry funktioniert irgendwie nicht richtig.
Mitglied: 106009
106009 Apr 05, 2012 at 18:35:29 (UTC)
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ß