CMD die Server aus einer TXT liest und dann eine Datei kopiert
Hallo zusammen.
hier im Forum konnte ich einen sehr guten Beitrag von "bastla" finden.
Leider klappt es bei mir nicht so richtig was ich daraus gebastelt habe.
Folgendes:
ein einfacher Copy Befehl:
da sich die Server ständig ändern und auch die zu kopierende Datei ständig ändern wollte ich eine zentralisierte Lösung schaffen.
So will ich jetzt nicht jedesmal die Zeile komplett kopieren und von Hand den Servernamen ändern.
und eben Dank "bastla" habe ich soweit das hier:
Infos:
Die Log Datei sollte so aussehen:
Jetzt motzt aber immer die CMD Box was von ...kann nul nicht finden.... und das Log schreibt auch nur 1 Datei kopiert usw....
kann mich hier jemand unterstützten und das Skript da oben etwas säubern und anpassen?
vielen Dank im Voraus!!!
hier im Forum konnte ich einen sehr guten Beitrag von "bastla" finden.
Leider klappt es bei mir nicht so richtig was ich daraus gebastelt habe.
Folgendes:
ein einfacher Copy Befehl:
copy /y C:\skripte\Anpassungen_Verteilen\test.txt \\Server1\skripte$\test.txt
da sich die Server ständig ändern und auch die zu kopierende Datei ständig ändern wollte ich eine zentralisierte Lösung schaffen.
So will ich jetzt nicht jedesmal die Zeile komplett kopieren und von Hand den Servernamen ändern.
und eben Dank "bastla" habe ich soweit das hier:
**@echo off & setlocal**
**set "Liste=C:\skripte\Anpassungen_Verteilen\alle_Batchserver.txt"**
**set "Log=C:\skripte\Anpassungen_Verteilen\Log.txt"**
**del "%Log%" 2^>nul **
**for /f "usebackq delims=" %%i in ("%Liste%") do >>"%Log%" copy /y C:\skripte\Anpassungen_Verteilen\test.txt \\%%i\skripte$\test.txt**
txt alle_batchserver:
Server1
Server2
Server3
Server4
Server2323
ServerA
ServerB
.....
Server1 Datei XYZ erfolgreich kopiert
Server2 Datei XYZ erfolgreich kopiert
....
kann mich hier jemand unterstützten und das Skript da oben etwas säubern und anpassen?
vielen Dank im Voraus!!!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Dani am 08.07.2010 um 10:54:51 Uhr
Code-Tags hinzugefügt.... einfach besser zu lesen.
Content-ID: 146466
Url: https://administrator.de/forum/cmd-die-server-aus-einer-txt-liest-und-dann-eine-datei-kopiert-146466.html
Ausgedruckt am: 23.12.2024 um 07:12 Uhr
11 Kommentare
Neuester Kommentar
Hallo jonny83!
Die Zeile 6 würde ich zunächst eher so schreiben
(und danach noch "test.txt" durch eine Variable ersetzen) ...
Grüße
bastla
Die Zeile 6 würde ich zunächst eher so schreiben
for /f "usebackq delims=" %%i in ("%Liste%") do copy C:\skripte\Anpassungen_Verteilen\test.txt \\%%i\skripte$\test.txt >nul && >>"%Log%" echo %%i Datei test.txt erfolgreich kopiert
Grüße
bastla
Ich will ja nicht vorgreifen, aber hast Du es nicht einfach mal probiert?
Markus
@echo off & setlocal
set "Liste=C:\skripte\Anpassungen_Verteilen\alle_Batchserver.txt"
set "Log=C:\skripte\Anpassungen_Verteilen\Log.txt"
set "QuellDatei=C:\skripte\Anpassungen_Verteilen\test2.txt"
Set Ziel="skripte\usw"
del "%Log%" 2^>nul
for /f "usebackq delims=" %%i in ("%Liste%") do copy %QuellDatei% \\%%i\%Ziel%\ >nul && >>"%Log%" echo %%i Datei %QuellDatei% erfolgreich kopiert
Markus
Hier würde darauf tippen, dass hier ein paar & fehlen. Bin mir aber nicht ganz sicher:
Ein Tipp am Rande. Vom dem hier habe ich auch noch längst nicht alles verinnerlicht, ist aber eine großartige Einsteigerhilfe!
Markus
[OT]
Ich weiß ja nicht, wie aufmerksam andere sind, aber ich habe die Frage eher zufällig gesehen.
Ich denke, wenn Du das einmal als gelöst markiert hast und in diesem Zusammenhang aber eine neue Frage ergibt, dann solltest Du auch eine neue Frage einstellen. Meinetwegen mit Verweis auf den "alten" Thread
[/OT]
[noch ein OT]
Mir fällt es leichter, dem Thread und die Fragen zu folgen, wenn Du die Formatierungshilfen nutzen würdest und z. B. dein Script in < code > < /code> Tags einschließen würdest.
Danke!
[/noch ein OT]
echo %errorlevel%
IF ERRORLEVEL 1 (
%MailEXE% -s EXchange -t %RCPT% -f %ABS% -h -a "%Subj%" -m %LOG% -c
&
echo %Liste%
&
for /f "usebackq delims=" %%i in ("%Liste%") do copy \\serverxyz\freigabe$\datei1.txt \\%%i\skripte$\ >nul && >>"%Log%" echo %%i Datei %QuellDatei% erfolgreich kopiert
)
Ein Tipp am Rande. Vom dem hier habe ich auch noch längst nicht alles verinnerlicht, ist aber eine großartige Einsteigerhilfe!
Markus
[OT]
Ich weiß ja nicht, wie aufmerksam andere sind, aber ich habe die Frage eher zufällig gesehen.
Ich denke, wenn Du das einmal als gelöst markiert hast und in diesem Zusammenhang aber eine neue Frage ergibt, dann solltest Du auch eine neue Frage einstellen. Meinetwegen mit Verweis auf den "alten" Thread
[/OT]
[noch ein OT]
Mir fällt es leichter, dem Thread und die Fragen zu folgen, wenn Du die Formatierungshilfen nutzen würdest und z. B. dein Script in < code > < /code> Tags einschließen würdest.
Danke!
[/noch ein OT]
Hallo jonny83!
Vorweg: Die nicht definierte Variable %QuellDatei% wird ja nur für die Logeinträge verwendet und sollte daher als Fehlerquelle ausscheiden ...
Ändere bitte die erste Zeile auf
(das "
Noch eine Anmerkung: Da Du ja das Log per Mail verschickst, solltest Du die Reihenfolge ändern: zuerst kopieren, dann mailen ...
@BigWim
Die Verknüpfung der einzelnen Befehle durch "&" ist nicht nötig - dafür sorgen ja die Klammern ...
Grüße
bastla
Vorweg: Die nicht definierte Variable %QuellDatei% wird ja nur für die Logeinträge verwendet und sollte daher als Fehlerquelle ausscheiden ...
Ändere bitte die erste Zeile auf
echo on & setlocal
setlocal
" soll dann übrigens auch bleiben, wenn Du später wieder ein "echo off
" daraus machst) und schau Dir einmal an, welche Befehle denn nun wie ausgeführt werden - Zeit dazu hast Du, wenn Du den Batch direkt aus einer CMD-Shell startest oder durch ein "pause
" anstelle des unnötigen ":End
" ...Noch eine Anmerkung: Da Du ja das Log per Mail verschickst, solltest Du die Reihenfolge ändern: zuerst kopieren, dann mailen ...
@BigWim
Die Verknüpfung der einzelnen Befehle durch "&" ist nicht nötig - dafür sorgen ja die Klammern ...
Grüße
bastla
@BigWim
Grüße
bastla
Dann gilt das aber nur, weil das eine IF-Anweisung ist, oder?
Grundsätzlich für alle "geklammerten" Blöcke aus mehreren Zeilen (typischer Weise auch bei "for
"-Schleifen gerne verwendet) ...Grüße
bastla