Dateien im Netzwerk per Skript kopieren
die hostnamen der Clients liegen als Txtfile vor:
pc1
server2
blabla
...
ich würde also gern ein Skript haben das folgendes macht:
- zuerst sich mit den Clients auf c$ aus der Liste verbindet, Administrator login sollte in der Batchdatei mitgegeben werden
- überprüft ob das Verzeichnis xxx in c:\Programme existiert. Wenn nicht den hostnamen in eine txt-datei schreibt.
-die datei blabla in das Verzeichnis c:\windows kopiert. Falls diese schon vorhanden ist sie trotzdem überschreibt.
- die Netzlaufwerke wieder trennt.
Wer kann mir helfen?
Content-ID: 61719
Url: https://administrator.de/contentid/61719
Ausgedruckt am: 22.11.2024 um 21:11 Uhr
Schematisch (aber ungetestet) sollte es etwa so gehen (wobei ich keinen Grund für ein Mapping von C$ sehe und daher darauf verzichte):
@echo off & setlocal
set "V=Verzeichnisname"
set "D=blabla.ext"
set "Hostnames=hostnames.txt"
::Logfiles
set "Offline=Offline.txt"
set "NoDir=VerzeichnisFehlt.txt"
set "NoCopy=NichtKopiert.txt"
if exist "%Offline%" del "%Offline%"
if exist "%NoDir%" del "%NoDir%"
if exist "%NoCopy%" del "%NoCopy%"
for /f "usebackq eol=; delims=" %%i in ("%Hostnames%") do call :ProcessHost "%%i"
goto :eof
:ProcessHost
ping %~1 >nul || (echo %~1>>"%Offline%" & goto :eof)
echo %~1
dir /ad "\\%~1\c$\Programme\%V%\" >nul 2>nul || echo %~1>>"%NoDir%"
if exist "\\%~1\c$\Windows\" copy /y "%D%" "\\%~1\c$\Windows\" >nul 2>nul || echo %~1>>"%NoCopy%"
if exist "\\%~1\c$\WINNT\" copy /y "%D%" "\\%~1\c$\WINNT\" >nul 2>nul || echo %~1>>"%NoCopy%"
Grüße
bastla
[Edit] Rechnernamen in %Hostnames% können per ";" auskommentiert werden; bei Bedarf wird in das Verzeichnis "WINNT" kopiert - siehe dazu auch unten [/Edit]
miniversum