Windows

Dateien und Verzeichnis durchsuchen per cmd

Heute mal was aus der Windows Ecke

Ich stand vor der Aufgabe in einem Windows Netz bestimmte Dateien bzw Verzeichnisse zu suchen. Gut ich hätte an alle 200 Rechner gehen können aber das wäre ziemlicher Aufwand und zudem würde man die Nutzer vom Arbeiten abhalten. Weiterer Grund warum das nicht möglich war , ist das einige Rechner irgendwo auf der Welt sind per VPN.

Nun gut , was also machen?

Windows bietet genügend Mittel an wenn man raus findet wie man sie nutzt.

Was braucht man? Nicht viel , nur die Gute Alte Eingabeaufforderung und einen Editor.

@echo off
REM H = Hostliste
REM U = Datei/Verzeichnis
REM G = Guest/ Hostnamen

REM Hostliste definieren
echo Name der Hostliste eingeben z.B. host.txt :
set /P H=
REM Datei oder Verzeichnis definieren
echo Dateinamen eingeben mit .Endung oder Verzeichnis*: 
set /P U=
REM Zeit Format einstellen
For /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set mytime=%%a:%%b)

REM Schleife %%G setzt den Hostnamen aus der Liste 
REM %H% wurde oben definiert und wird () eingesetzt
REM %U% setzt den Suchbegriff ein und wird mit an den Log Namen mit angehaengt
if exist C:LOG echo "Folder already exists"
if not exist "C:LOG" mkdir C:LOG
if exist C:LOG%U% echo "Folder already exists"
if not exist "C:LOG%U%" mkdir C:LOG%U%
for /F %%G in (%H%) do (
 echo %date%_%mytime% >> C:LOG%U%%%G.log
 ping -n 1 -4 %%G >> c:log%U%%%G.log
 ping -n 1 -6 %%G >> c:log%U%%%G.log
 dir \%%Gc$*%U% /b /s >> c:log%U%%%G.C.%U%.log
 dir \%%Gd$*%U% /b /s >> c:log%U%%%G.D.%U%.log
 
)

Das Script funktioniert soweit ganz gut, so lang man als Administrator arbeitet.

Beim lesen wird der Ein oder andere sagen , man könnte die if ja noch mit else etc abfangen. Könnte man 😉 aber mir war erstmal die Funktion an sich wichtig , das schöne kann man bei Gelegenheit nochmal anpassen.