Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
Kommentar vom Moderator Dani am 08.07.2010 um 10:54:51 Uhr
Code-Tags hinzugefügt.... einfach besser zu lesen.
GELÖST

CMD die Server aus einer TXT liest und dann eine Datei kopiert

Frage Entwicklung Batch & Shell

Mitglied: jonny83

jonny83 (Level 1) - Jetzt verbinden

08.07.2010, aktualisiert 10:54 Uhr, 3382 Aufrufe, 11 Kommentare

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:
01.
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:
01.
**@echo off & setlocal** 
02.
**set "Liste=C:\skripte\Anpassungen_Verteilen\alle_Batchserver.txt"** 
03.
**set "Log=C:\skripte\Anpassungen_Verteilen\Log.txt"** 
04.
 
05.
**del "%Log%" 2^>nul ** 
06.
**for /f "usebackq delims=" %%i in ("%Liste%") do >>"%Log%" copy /y C:\skripte\Anpassungen_Verteilen\test.txt \\%%i\skripte$\test.txt**
Infos:
01.
txt alle_batchserver: 
02.
Server1 
03.
Server2 
04.
Server3 
05.
Server4 
06.
Server2323 
07.
ServerA 
08.
ServerB 
09.
.....
Die Log Datei sollte so aussehen:
01.
Server1 Datei XYZ erfolgreich kopiert 
02.
Server2 Datei XYZ erfolgreich kopiert 
03.
....
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!!!
Mitglied: bastla
08.07.2010 um 09:42 Uhr
Hallo jonny83!

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
(und danach noch "test.txt" durch eine Variable ersetzen) ...

Grüße
bastla
Bitte warten ..
Mitglied: jonny83
08.07.2010 um 10:53 Uhr
Hallo bastla - super danke das du mir geantwortet hast!!

ich konnte das auch schon erfolgreich testen!

Deine Idee bei der Ausgabe eine Variable zu schreiben hab ich auch umgesetzt.


Hast du mir vielleicht noch eine Hilfestellung wie ich es anstelle oben noch eine variable zu setzen:
01.
also zum Beispiel SET "ZIEL=\\%%1\skripte\usw...." 
so könnte ich dann wirklich nur noch oben unter SET meine Quell und Ziel Datei anpassen und schauen das die Serverliste immer aktuell ist.
01.
@echo off & setlocal 
02.
set "Liste=C:\skripte\Anpassungen_Verteilen\alle_Batchserver.txt" 
03.
set "Log=C:\skripte\Anpassungen_Verteilen\Log.txt" 
04.
set "QuellDatei=C:\skripte\Anpassungen_Verteilen\test2.txt" 
05.
 
06.
del "%Log%" 2^>nul 
07.
for /f "usebackq delims=" %%i in ("%Liste%") do copy %QuellDatei% \\%%i\skripte$\ >nul && >>"%Log%" echo %%i Datei %QuellDatei% erfolgreich kopiert
Bitte warten ..
Mitglied: BigWim
08.07.2010 um 11:17 Uhr
Ich will ja nicht vorgreifen, aber hast Du es nicht einfach mal probiert?

01.
@echo off & setlocal 
02.
set "Liste=C:\skripte\Anpassungen_Verteilen\alle_Batchserver.txt" 
03.
set "Log=C:\skripte\Anpassungen_Verteilen\Log.txt" 
04.
set "QuellDatei=C:\skripte\Anpassungen_Verteilen\test2.txt" 
05.
Set Ziel="skripte\usw" 
06.
 
07.
del "%Log%" 2^>nul 
08.
for /f "usebackq delims=" %%i in ("%Liste%") do copy %QuellDatei% \\%%i\%Ziel%\ >nul && >>"%Log%" echo %%i Datei %QuellDatei% erfolgreich kopiert
Markus
Bitte warten ..
Mitglied: jonny83
08.07.2010 um 13:00 Uhr
Also - es ist gelöst!

Danke an BASTLA und BIGWIM !!!

Hier mein Skript für das Verteilen von CMDs oder TXT Dateien <-- so wie ich es halt grad brauche:

@echo off & setlocal
echo.
echo.
echo
echo.
echo Quelle und Ziel angepasst ???
echo.
echo Serverliste stimmt auch?
echo.
echo C:\skripte\Anpassungen_Verteilen\alle_Batchserver.txt
echo.
echo

echo.
echo.
pause
set "Liste=C:\skripte\Anpassungen_Verteilen\alle_Batchserver.txt"
vset "Log=C:\skripte\Anpassungen_Verteilen\Log.txt" ;

set "QuellDatei=C:\skripte\cmd\Hosts_vergleichen\Vergleiche_hosts.cmd" ;
Set "Ziel=skripte$\cmd\Hosts_vergleichen\" ;


del "%Log%" 2^>nu l
for /f "usebackq delims=" %%i in ("%Liste%") do copy %QuellDatei% \\%%i\%Ziel%\ >nul && >>"%Log%" echo %%i Datei %QuellDatei% erfolgreich kopier t


Hier mein Skript um Dateien zu löschen ...

@echo off & setloca l
echo .
echo .
echo

echo .
echo Quelle und Ziel angepasst ?? ?
echo .
echo Serverliste stimmt auch ?
echo .
echo C:\skripte\Anpassungen_Verteilen\alle_Batchserver.tx t
echo .
echo
echo .
echo .
paus e
set "Liste=C:\skripte\Anpassungen_Verteilen\alle_Batchserver.txt" ;
set "Log=C:\skripte\Anpassungen_Verteilen\Log.txt" ;

set "delDatei=*.txt"
Set "Ziel=skripte$" ;


del "%Log%" 2^>nu l
for /f "usebackq delims=" %%i in ("%Liste%") do del \\%%i\%Ziel%\%delDatei% >nul && >>"%Log%" echo %%i Datei %delDatei% erfolgreich gelöscht//**



Meine Umgebung:

C:\skripte\Anpassungen_Verteilen

Inhalt:
Lösche.cmd
Verteile.cmd
alle_Batchserver.txt <-- hier stehen die Server drin:
Server1
Server2
Serverxyz
Bitte warten ..
Mitglied: jonny83
08.07.2010 um 16:44 Uhr
Hallo,

ich habe doch noch eine Frage bzw. einen Nachtrag.

Die Zeilen des Skriptes habe ich jetzt in einem anderen Skript übernommen.
Dort ist es aber in einer Abfrage drin und funktioniert nicht mehr.
Das ganze Skript klappt super gut! Nur musste ich ganz unten bei dem Kopierbefehl auf immer alle Server in jede Zeile kopieren - sehr Mühsam! Jetzt ist mir eingefallen das ich das Thema mit der alle_server.txt ja hier auch super verwenden kann. Leider klappt das aber nicht. Mein Skript, wie gesagt, klappt 100%ig bzgl. der Errorlevel Erkennung - der Mail die dann verschickt wird usw..... aber der Kopiervorgang klappt nicht!

"......auszug....... ANFANG"

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

)

"......auszug.......ENDE "



Die Mail wird verschickt - aber die Dateien werden nicht kopiert!!!!

PS: die Mail Adresse und datei usw... habe ich verändert - sind im Original aber Funktionsfähig!


Hier das komplette Skript!!!!!!

01.
@echo off 
02.
echo. 
03.
 
04.
set "HOSTalt=C:\skripte\cmd\alt.txt" 
05.
set "LOG=C:\skripte\cmd\neuer.txt" 
06.
set "MailEXE=C:\.....exe" 
07.
set "Subj=hallo e-mail" 
08.
set "RCPT=admin@mail.de" 
09.
set "ABS=skript@mail.de" 
10.
set "Liste=C:\skripte\cmd\alle_Batchserver.txt" 
11.
Set "Ziel=skripte$\cmd\" 
12.
 
13.
 
14.
del "%LOG%" 
15.
 
16.
 
17.
echo Skript text mit Meldungen zur Bearbeitung folgen !   >> %LOG% 
18.
echo --------------------------------------------------------------------------------- >> %LOG% 
19.
echo ----------------------zu bearbeitende DATEN----------------------- >> %LOG% 
20.
echo --------------------------------------------------------------------------------- >> %LOG% 
21.
 
22.
fc.exe %alt% \\server1\date1 /N >> %LOG% 
23.
fc.exe %alt% \\server2\datei1 /N >> %LOG% 
24.
 
25.
find "Keine Unterschiede gefunden" %LOG% ' find gibt Error 1 zurück wenn er einen Treffer landet! In jedem anderen Fall gibt er irgendwas anderes aus.... 
26.
 
27.
echo %errorlevel% 
28.
 
29.
IF ERRORLEVEL 1 (  
30.
 
31.
	%MailEXE% -s EXchange -t %RCPT% -f %ABS% -h -a "%Subj%" -m %LOG% -c 
32.
 
33.
	echo %Liste% 
34.
 
35.
	for /f "usebackq delims=" %%i in ("%Liste%") do copy \\serverxyz\freigabe$\datei1.txt \\%%i\skripte$\ >nul && >>"%Log%" echo %%i Datei %QuellDatei% erfolgreich kopiert 
36.
 
37.
38.
 
39.
:End


[Edit Biber] Gecodetagged...äh...codegetaggert...formatiert eben. Siehe BigWims Anmerkungen unten [/Edit]
Bitte warten ..
Mitglied: BigWim
08.07.2010 um 17:21 Uhr
Hier würde darauf tippen, dass hier ein paar & fehlen. Bin mir aber nicht ganz sicher:

01.
echo %errorlevel% 
02.
 
03.
IF ERRORLEVEL 1 (  
04.
 
05.
%MailEXE% -s EXchange -t %RCPT% -f %ABS% -h -a "%Subj%" -m %LOG% -c 
06.
 
07.
08.
 
09.
echo %Liste% 
10.
 
11.
12.
 
13.
for /f "usebackq delims=" %%i in ("%Liste%") do copy \\serverxyz\freigabe$\datei1.txt \\%%i\skripte$\ >nul && >>"%Log%" echo %%i Datei %QuellDatei% erfolgreich kopiert 
14.
 
15.
)
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]
Bitte warten ..
Mitglied: bastla
08.07.2010 um 17:41 Uhr
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
echo on & setlocal
(das "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
Bitte warten ..
Mitglied: BigWim
08.07.2010 um 18:12 Uhr
Zitat von bastla:
@BigWim
Die Verknüpfung der einzelnen Befehle durch "&" ist nicht nötig - dafür sorgen ja die Klammern ...
AHA! Dann gilt das aber nur, weil das eine IF-Anweisung ist, oder?

Danke für die Richtigstellung

Markus
Bitte warten ..
Mitglied: bastla
08.07.2010 um 18:20 Uhr
@BigWim
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
Bitte warten ..
Mitglied: jonny83
09.07.2010 um 07:56 Uhr
Guten Morgen,

danke für die Hinweise bzgl. Code und neuer Thread mit Verlinkung ...

eines noch - das Skript kopiert immer noch nicht ...

...........
01.
IF ERRORLEVEL 1 (  
02.
 
03.
 
04.
	for /f "usebackq delims=" %%i in ("%Liste%") do copy \\server1\datei1 \\%%i\skripte$\ >nul && >>"%Log%" echo %%i Datei %QuellDatei% erfolgreich kopiert 
05.
 
06.
	%MailEXE% -s exchange -t %RCPT% -f %ABS% -h -a "%Subj%" -m %LOG% -c 
07.
 
08.
	echo %Liste% 
09.
 
10.
)
..........
Bitte warten ..
Mitglied: jonny83
09.07.2010 um 08:11 Uhr
Ach ihr seid meine HELDEN !!!!!!!!!!!!!!

Danke für das Echo on !!!!!!

ich hatte nicht die Berechtigung bei dem Copy die Quelle zu lesen <-- dummerweise sah ich das im LOG nicht weil ich ja selber schreibe "erfolgreich kopiert" ;-P

erst jetzt durch das echo on konnte ich das begreifen ....

ich danke euch 10000fach für eure Hilfe!!!!!!!!!!
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Nach xcopy feststellen, ob Datei kopiert wurde oder nicht (9)

Frage von Scar61 zum Thema Batch & Shell ...

Webentwicklung
HTML Output in eine txt Datei mit VisualBasicScript (2)

Frage von coca22COCA zum Thema Webentwicklung ...

Batch & Shell
Merkwürdige Zeilenformatierung in txt Datei (3)

Frage von miczar zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...