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
GELÖST

Beim ausführen einer Batch kopien von Files erstellen

Frage Entwicklung Batch & Shell

Mitglied: winlin

winlin (Level 2) - Jetzt verbinden

10.08.2010, aktualisiert 18.10.2012, 4081 Aufrufe, 18 Kommentare

Hallo Leute,

vorkurzem habe ich in einem Post gesehen das einer ne Lösung gesucht hat um kopien von logfiles (inkl. Datum und Uhrzeit) zu erstellen. Das hätte ich gerne auch für etwas nur bin ich Batch Neuling und benötige das auch nur einmal) Habe auch schon bibers Batch for runaways gelesen...naja irgendwie komm ich nicht zurecht.

Ich möchte folgendes machen:
1. Ich möchte, immer wenn ich ein BackupBatch ausführe das meine logfiles mit Datum und Uhrzeit an den filenamen angehängt werden....
ALSO:
Quelle---> C\Prgal\license.log
ZIEL---> C:\BACKUP\license.log.20100810_16:40:00

Geht das ungefähr so:

01.
 
02.
 
03.
REM Datumsvariablen systemspezifisch aufbereiten 
04.
if %windir%==C:\WINDOWS for /f "tokens=1-3 delims=. " %%a in ('date /t') do set dd=%%a&set mm=%%b&set yyyy=%%c 
05.
if %windir%==C:\WINDOWS for /f "tokens=1-2 delims=:" %%a in ('time /t') do set hh=%%a&set mi=%%b 
06.
 
07.
xcopy C:\Prgal\license.log C:\BACKUP\license.log 
08.
renC:\BACKUP\license.logg license.log%%hh%%-%%mi%% 
09.
....
Mitglied: Biber
10.08.2010 um 17:59 Uhr
Moin winlin,

willkommen im Forum.

Natürlich bekommst du hier Hilfe und (wenn du darauf bestehst) auf Antworten auf exakt die Frage, die du gestellt hast.

Dennoch - vorher versuche ich noch mal, dich davon abzubringen.

--> Kein guter Plan.

XCopy (und die ganzen anderen xy--robo-usw-copy-Befehle haben zwei sehr nützliche Features, die der normale Copy-Befehl nicht per se mitbringt.

a) das offensichtliche... die kopieren eben auch eine Unterverzeichnisstruktur, nicht nur explizit von Quellverzeichnis nach Zielverzeichnis.
b) und genau so nützlich: die können alle kopieren nur die älteren/die nicht vorhandenen/die vorhandenen/die geänderten... Dateien.

Das zweite Feature - nämlich das du doch nicht jedesmal alle 140000 Dateien nochmal sichern musst, weil sich zwei Dateien geändert haben- das hebelst du aus.

Du machst mit deiner Mimik
  • jedesmal eine Komplettsicherung und
  • hast hinterher außerdem "Datei A" und "Eins-zu-Eins-Kopie von Datei A" unter verschiedenen Namen vorliegen.
  • und - mal zwei Wochen weiter denken... sobald du mal eine Datei "DeineDatei.xyz-2010-08-10_111213" sicherst--> die heisst dann ""MeineDatei.xyz-2010-08-10_111213_2010-08-11_202122". Da wirst du relativ schnell albern bei.

--> Ich würde den Plan ändern auf
  • entweder alles "VOLL" sichern in ein Backup-Verzeichnis mit Tagesdatum (z.B. F:\Backups\2010\2010-08-10_111213), aber Dateinamen_neu bleiben gleich Dateinamen_alt
  • oder alles INKREMENTELL (nur die geänderten Dateien sichern in ein Backup-Verzeichnis mit Kennzeichen "Inkrementell"+Tagesdatum); Dateinamen bleiben
  • oder alles sichernswerte zusammenzippen in einen Datenklumpen mit Tagesdatum; Originaldateinamen bleiben
  • .... (oder 34 andere beliebte Varianten einer Sicherung)

--> auf jeden Fall erstmal die Strategie überdenken.

Grüße
Biber
Bitte warten ..
Mitglied: 60730
10.08.2010, aktualisiert 18.10.2012
auch von mir ein Hello - come in and find out.

Was ich aber mal loswerden muß - ist:
(OT)
  • Endlich mal ein "Neuer" - der
  • eine Zeile des Grußes für uns übrig hat (wobei das ja viele jungspundalthasen auch nicht können)
  • codeblöcke ohne mit dem Finger drauf zu zeigen
  • funktionierende Shift Taste
  • kein @€cho off im Testlabor

Ja ist denn schon wieder Weihnachten?

(/OT)

@Biber - ich widerschreibe dir ja höchst ungern, aber er will doch nur die (das eine) logfile wegsichern.

Im Prinzip gebe ich Biber recht und wegen Strategie überdenken - such hier mal nach 7zip Kommandzeile Datum.
Ist wahrscheinlich für eine txt Datei die gesammelt werden soll - der platzsparendste Weg.
- http://www.administrator.de/forum/zeitgesteuerte-zippen-von-dateien-dur ...

PS: "Time/T" kann nur Stunde-minute - du müsstest via echo %time% arbeiten, wenn du die sekunden dazu haben willst.
ungetestet
01.
if %windir%==C:\WINDOWS ( 
02.
			for /f "tokens=1-3 delims=. " %%a in ('date /t') do set dd=%%a & set mm=%%b & set yyyy=%%c 
03.
			for /f "tokens=1,2,3 delims=: " %%a in ('echo %time%') do set hh=%%a & set mi=%%b & set sec=%%c 
04.
05.
 
06.
If "%dd%"=="" echo schit happens
gruß
Bitte warten ..
Mitglied: Biber
10.08.2010 um 18:49 Uhr
Uuuuuuuuupps, T-Mo,

sorry,du hast vollkommen Recht....
Ich sollte mir abgewöhnen, geleichzeitig zu telefonieren und zu tippseln.

Okay, jetzt bin ich zwar fertig mit Telefonieren - aber ichweiss wieder mal nicht, wo ich mein Tipp-Ex hingelegt habe.
Sonst würde meinen Kommentar oben etwas editieren.

Okay - ich mach mal einfach nach dem "-->Kein guter Plan" weiter, als wäre nix gewesen....

01.
...  
02.
xcopy C:\Prgal\license.log C:\BACKUP\license.log  
03.
 
04.
ren C:\BACKUP\license.logg license.log%%hh%%-%%mi%%  
05.
 
--> Kein guter Plan.
Erstens wird er die "C:\BACKUP\license.logg" mit zwei "g" am Ende nicht finden und rumwinseln
Zweitens haben dann immer die License.logs das Datum/meinetwegen die Uhrzeit des Sicherns. Nicht aber ihr eigenes.

Das heißt auch hier (wie oben ausgeführt)--> u.U. sicherst du 200x dieselbe License.log-Datei.

Aber das steigert den Nutz- oder Brennwert ja nicht automatisch um das 200fache.

--> Ich würde das Datei-Datum der Logdatei anhängen und diese Datei dann sichern, wenn es genau diesen Stand/diesen Dateinamen noch nicht gibt.

Grüße
Biber
Bitte warten ..
Mitglied: 60730
10.08.2010 um 20:06 Uhr
Zitat von Biber:
Uuuuuuuuupps, T-Mo,

sorry,du hast vollkommen Recht....
Ich sollte mir abgewöhnen, geleichzeitig zu telefonieren und zu tippseln.
Wieso, fängt doch beides mit T an
Okay, jetzt bin ich zwar fertig mit Telefonieren - aber ich weiss wieder mal nicht, wo ich mein Tipp-Ex hingelegt habe.
Auf meinem Monitor...
Sonst würde meinen Kommentar oben etwas editieren.
Erstens wird er die "C:\BACKUP\license.logg" mit zwei "g" am Ende nicht finden und rumwinseln
Zweitens haben dann immer die License.logs das Datum/meinetwegen die Uhrzeit des Sicherns. Nicht aber ihr eigenes.
01.
for /f "tokens=1-3 delims=. " %%a in ('dir C:\BACKUP\license.log^|findstr "log"') do ( 
02.
              if not exist C:\BACKUP\license-%%a-%%b-%%c.log copy C:\Prgal\license.log C:\BACKUP\license-%%a-%%b-%%c.log 
03.
)

--> Ich würde das Datei-Datum der Logdatei anhängen und diese Datei dann sichern, wenn es genau diesen Stand/diesen Dateinamen noch nicht gibt.

und warum "machste das nicht? -schonwiederdieohrenamhörer -duck-flitz

Grüße
Biber
retour
Bitte warten ..
Mitglied: winlin
11.08.2010 um 10:47 Uhr
Hallo Timo, Hallo Biber!

also erst mal ein Riesen Dankeschön für eure Posts, da sieht man das Profis am Werk sind Ich will euch mal den Hintergrund erklären was ich genau machen will und möglicherweise ergibt sich danach eine ganz andere Lösungsfindung.

Ich habe Windows Services die auf einem Server laufen. Es handelt sich dabei um Flexlm-Lizenzdienste. Die Services wurden alle mit LMTools installiert und die Vendor Daemons, Lizenzdateien und die Log-Files befinden sich alle unter C:\flexlm\lizenzdienstname.

Wenn der Lizenzdienst gestoppt/gestartet werden muss (mache ich mit einer batch), soll die Log-File gesichert werden, da diese beim nächsten Start des Lizenzdienstes neu angelegt wird bzw. die Einträge die zuvor drin waren sind dann alle weg. Dieses starten/stoppen passiert nicht regelmässig, nur wenn es mal passiert dann soll die Logfile mit dem namen license.log gesichert werden im selben Verzeichnis und am besten mit Datum/Uhrzeit kopiert werden. Mit der Sicherung dieser Log-File stellen wir sicher das wir noch in alte Logs reinschauen können, falls das mal nötig sein sollte.

So und meine Idee war in mein Services-starten/stoppen-Batch etwas einzubauen das mir nach dem stoppen/starten des Lizenzdienstes eine Sicherung der aktuellen Log-File macht und Sie im selben Ordner ablegt (mit Datum/Uhrzeit).

So nun die Frage an euch - wie würdet ihr das am besten machen? Wichtig ist:
1. Die neu gesicherte Log-File mit Datum/Uhrzeit muss im selben Verzeichnis liegen wie die license.log
2. Die Batch-Codezeilen müssen im starten/stoppen Batch eingebunden werden die dann nach dem starten/stoppen eben diese neue Log anlegt.

Also starten/stoppen mache ich mit der Batch:
01.
echo Windows Services: 
02.
dir C:\flexlm\ /b /AD 
03.
SET /p service=Bitte geben Sie den Service ein den Sie starten wollen: 
04.
dir C:\flexlm\ /S /AD |find /i "%service%"&& goto start 
05.
goto error 
06.
:start 
07.
sc \\server01 start "%service%" 
08.
sc \\server02 start "%service%" 
09.
sc \\server03 start "%service%"
Hier möchte ich nun Codezeilen einbauen die mir eben die eigentliche license.log aus C:\flexlm\%service% mit Datum/Uhrzeit nach C:\flexlm\%service% kopiert.
Bitte warten ..
Mitglied: 60730
11.08.2010 um 17:52 Uhr
Salü,

ich weiss - ich bin pingelig...
Ich habe Windows Services die auf einem Server laufen.
passt doch nicht zu den drei sc Befehlen....

Im Prinzip würde ich auf jedem der Server den Ordner, wo sich das log aufhält eine Freigabe einrichten.
Am liebsten mit nem $ dahinter, dann tauchts bei den klickibuntinetzwerkdurchsuchenden Usern nicht auf.

01.
echo Windows Services: 
02.
dir C:\flexlm\ /b /AD 
03.
SET /p service=Bitte geben Sie den Service ein den Sie starten wollen: 
04.
dir C:\flexlm\ /S /AD |find /i "%service%"&& goto start 
05.
goto error 
06.
 
07.
::backup 
08.
for /f "tokens=1-3 delims=. " %%a in ('dir \\%1\c$\backup\license.log^|findstr "log"') do ( 
09.
              if not exist %1\c$\backup\license-%%a-%%b-%%c.log copy %1\c$\Prgal\license.log %1\c$\backup\license-%%a-%%b-%%c.log 
10.
11.
goto :eof 
12.
 
13.
:start 
14.
call :backup server01 
15.
sc \\server01 start "%service%" 
16.
 
17.
call :backup server02 
18.
sc \\server02 start "%service%" 
19.
 
20.
call :backup server03 
21.
sc \\server03 start "%service%" 
22.
 
23.
goto end 
24.
:error 
25.
 
26.
:end
pi mal daumen ungetestet und aus dem Bauch raus. ganz sicher mit verbesserungspotential.

Gruß
Bitte warten ..
Mitglied: winlin
12.08.2010 um 10:58 Uhr
Servus Ihr Timo, Biber sowie alle anderen User

also mit dem folgendem Skript kann ich beim starten der Windows Services eine Kopie der aktuellen licnese.log machen die dann das Format hat: license-12-08-2010. Ach ja und nochwas ich benötige das ganze mit den Sicherungen nur auf dem Hauptserver server01!

Ich würde sehr gerne noch die Uhrzeit hinzufügen, da es mal passieren kann das aus irgendeinem Grund ich den Service mehrmals am Tag starten muss - Mit dem u.g. Skript macht er dann nichts mehr da die log-Files bereits bestehen. Wenn ich aber die Uhrzeit hinzufüge wäre das kein Problem. Stunde und Minute reicht mir aus, cool wäre halt mit hh:mm:sec

01.
echo Windows Services: 
02.
dir C:\flexlm\ /b /AD 
03.
SET /p service=Bitte geben Sie den Service ein den Sie starten wollen: 
04.
dir C:\flexlm\ /S /AD |find /i "%service%"&& goto start 
05.
goto error 
06.
 
07.
:backup 
08.
for /f "tokens=1-3 delims=. " %%a in ('dir \\server01\C$\flexlm\%service%\license.log^|findstr "log"') do ( 
09.
              if not exist \\server01\C$\flexlm\%service%\license-%%a-%%b-%%c.log copy \\server01\C$\flexlm\%service%\license.log \\server01\C$\flexlm\%service%\license-%%a-%%b-%%c.log 
10.
11.
goto :eof 
12.
 
13.
:start 
14.
sc \\server01 start "%service%" 
15.
sc \\server02 start "%service%" 
16.
sc \\server03 start "%service%" 
17.
 
18.
goto end 
19.
:error 
20.
 
21.
:end 
22.
PAUSE
Bitte warten ..
Mitglied: winlin
12.08.2010 um 15:58 Uhr
Hey Biber

also erst mal Dankescheeeeeeeen für dein Feedback. Denkst du das ich mit. dem u.g. Skript gut da stehe ???? Wenn ich noch zu meinem Datumsformat die Uhrzeit hinzufügen will, was kommt noch hinzu?

Grüssle

winlin
Bitte warten ..
Mitglied: Biber
12.08.2010 um 18:30 Uhr
Moin winlin,

wenn du zu dem Tagesdatum noch die Uhrzeit ergänzen willst ist es nicht soo schwierig.
Am besten, du testest es mal trocken am CMD-Prompt.

Momentan nimmst du ja jetzt eine (die relevante) Zeile aus einer normalen DIR-Ausgabe, die meinetwegen so aussieht
...{ hier sagtest du "Dir \\server\share\XY\license.log, unten kommt unter anderem dann so eine Zeile:} 
08.08.10  18:34                2.147 license.log
-> Bisher zerlegst du diese Zeile mit einer FOR/F-Anweisung mit "tokens=1-3 delims=. ".
Also im ganzen Satz:
ich will die Zeile zerbröseln an den Trennzeichen Punkt und Leerzeichen und will die Brösel 1 (=Tag) ,2 (=Monat) und 3 (=Jahr) .

Was du jetzt als nächstes machen willst ist:
ich will die Zeile zerbröseln an den Trennzeichen Punkt und Doppelpunkt und Leerzeichen und will die Brösel 1, 2, 3 (=Tag. Monat, jahr wie oben) ,4 (=Stunde) und 5 (=sagichnich).

Simulation am CMD-Prompt (erste Zeile:ist die eingegebene; ">" NICHT mit eingeben; ist mein Prompt)
>for /f "tokens=1-5 delims=.: " %a in ("08.04.10  18:34  47 license.log") do @echo license%a-%b-%c_%d%e.log 
license08-04-10_1834.log
Der Text in der FOR/F-IN-Klammer entspricht meinen (zufällig eingestellten) DIR-Ausgabeformaten.
Kann bei dir etwas aussehen... aber genau deshalb solltest du ja trocken üben.

Grüße
Biber
Bitte warten ..
Mitglied: winlin
13.08.2010 um 10:45 Uhr
Servus Biber,

hey das find ich echt super wenn mal einer jemanden was erklärt Kenne mich schlecht mit batch aus aber wenn mir der biber so hilft dann lern ichs irgendwann)

du sag mal des tokens 1-5 versteh ich und wenn ich das da oben bei mir ausprobiere dann bekomme ich auch eine Ausgabe ähnlich wie bei dir. Schön und gut. Wenn ich aber das ganze dann mal versuche in mein Skript einzubauen klappts nicht. Kannst mir sagen wo ich Fehler mache?!?!?!

01.
echo Windows Services: 
02.
dir C:\flexlm\ /b /AD 
03.
SET /p service=Bitte geben Sie den Service ein den Sie starten wollen: 
04.
dir C:\flexlm\ /S /AD |find /i "%service%"&& goto start 
05.
goto error 
06.
 
07.
:backup 
08.
for /f "tokens=1-5 delims=.: " %%a in ('dir \\server01\C$\flexlm\%service%\license.log^|findstr "log"') do ( 
09.
              if not exist \\server01\C$\flexlm\%service%\license-%%a-%%b-%%c_%%d%%e.log copy \\server01\C$\flexlm\%service%\license.log \\server01\C$\flexlm\%service%\license-%%a-%%b-%%c_%%d%%e.log 
10.
11.
goto :eof 
12.
 
13.
:start 
14.
call :backup server01  
15.
sc \\server01 start "%service%" 
16.
 
17.
call :backup server02 
18.
sc \\server02 start "%service%" 
19.
 
20.
call :backup server03 
21.
sc \\server03 start "%service%" 
22.
 
23.
goto end 
24.
:error 
25.
 
26.
:end 
27.
PAUSE
Bitte warten ..
Mitglied: 60730
13.08.2010 um 12:07 Uhr
Moin,

du nutzt in einer Schleife eine Variable - und da ist Batch einfach dümmer als Brot.

Schau mal nach (sicherlich von Biber nett aufbereiteten) Tipps zu EnableDelayedExpansion - das erklärt hier jeden WocheMonat einer


Gruß
Bitte warten ..
Mitglied: winlin
13.08.2010 um 12:53 Uhr
Hi Timo,

naja das war ja sicherlich der entscheidende Hinweis)) Bekomme nachdem ich Setlocal enableDelayedExpansion gesetzt habe folgende logfile: license-13-08-2010_0908.log . Hmm nur ist Das Uhrzeitformat net schön. Es sollte noch ein : dazwischen

Ach ja in dem o.g. Skript von mir nimmt er ja das Datum von heute und die Uhrzeit wann die eigentlichen license.log (C:\flexlm\%service%\license.log) geändert worden ist und setzt sie dann in die neu kopierte logfile inkl. der Uhrzeit. Also die original license.log ist von heute 09:08 Uhr (letzte Änderung) und ich würde gerne das er die Zeit nimmt wann die neue license_DATUM_UHRZEIT.log erstellt worden ist. Also wenn ich das o.g. Skript ausführe soll er mir das heutige Datum ausgeben und die Uhrzeit wann ich das Skript ausgeführt habe bzw. wann die neue licnese_DATUM_UHRZEIT.log erstellt wurde (jetzt ist 13:00Uhr, das sollte er jetzt anzeigen).

Also ich muss ja sicherlich dann mit date /t und time /t arbeiten. Beim kopieren der license.log soll er durch ein echo date /t und time /t .

Also ich habe mal folgendes definiert set DATE=date /t und set TIME=time /t. Also gebe ich nun im CMD time ein erhalte ich das hier:
C:\Users\_admin_user>time
The current time is: 13:07:31,50
Enter the new time:
Bitte warten ..
Mitglied: Biber
13.08.2010 um 13:52 Uhr
Moin winlin,

naja, geht doch voran bei dir..

Ein paar Anmerkungen:
Es sollte noch ein : dazwischen
Nein. Das willst du nicht wirklich. Glaub mir.
Denn selbst, wenn ich dir hier eine handwerkliche Lösung zeigen würd, wie du einen Doppelpunkt in einen Dateinamen bekommst... Hey, für deine ästhetischen Empfingen mag es zwar dann wohlgefällig aussehen.
Aber ziemlich alle Utilities angefangen vom Windows-Explorer bis zum USB-Stick-Treiber oder bis zum CD-Brenner werden demonstrativ in einen unbefristeten Streik treten, wenn du die damit loslaufen lässt. Wenn du "0809" nicht als interpretierbare Uhrzeitangabe empfindest->"08h09".
Datei-Erstellungszeit <->Datei-Änderungszeit<-> Uhrzeit des Skriptlaufs.
Ist natürlich deine Entscheidung, welche Zeit du verwertest - ich habe oben schon geschrieben, welche ich nehmen würde.
Die ersten beiden bekommst du mit "tokens=1-5"-Minik aus der DIR-Ausgabe.
Beim DIR kannst du dir noch wünschen, ob Erstellungs oder Änderungszeit (siehe DIR /?; Parameter /tc und /tm )-
Die aktuelle Ortszeit deines Rechners steht in der Variablen %time%. Einfach mal "echo %time%" am Cmd-Prompt eingeben, dann siehst du das Format.

Grüße
Biber
Bitte warten ..
Mitglied: winlin
13.08.2010 um 14:50 Uhr
Servus Biber,

also das mit dem : ist einleuchtend und ich lass das natürlich sein brauch auch kein 08h09))))

Zum Punkt mit dem Datum...hier die Ausgabe von %date% bzw. date /t:
13.08.2010
Und hier die Ausgabe von %time% time /t:
14:14

etwa so?????
01.
Setlocal enableDelayedExpansion 
02.
echo Windows Services: 
03.
dir C:\flexlm\ /b /AD 
04.
SET /p service=Bitte geben Sie den Service ein den Sie starten wollen: 
05.
dir C:\flexlm\ /S /AD |find /i "%service%"&& goto start 
06.
goto error 
07.
 
08.
:backup 
09.
for /f "tokens=4-6 delims=: " %%a in (time /t) do set hh=%%d & set mi=%%e 
10.
for /f "tokens=1-5 delims=.: " %%a in (date /t) do set dd=%%a & set mm=%%b & set yyyy=%%c ( 
11.
              if not exist \\server01\C$\flexlm\%service%\license-%%a-%%b-%%c_%%d%%e.log copy \\server01\C$\flexlm\%service%\license.log \\server01\C$\flexlm\%service%\license-%%a-%%b-%%c_%%d%%e.log 
12.
13.
goto :eof 
14.
 
15.
:start 
16.
call :backup server01 
17.
sc \\server01 start "%service%" 
18.
 
19.
call :backup server02 
20.
sc \\server02start "%service%" 
21.
 
22.
call :backup server03 
23.
sc \\server03 start "%service%" 
24.
 
25.
goto end 
26.
:error 
27.
 
28.
:end 
29.
PAUSE 
30.
 
Bitte warten ..
Mitglied: 60730
13.08.2010 um 15:03 Uhr
moin,

was ganz andreasssesss..

  • schau dir mal meine Zeile 14 an...
14. call :backup server01
das bedeutet im klartext zwischen Tür & Angel
Springe zu dem Block, der bei Zeile 7 beginnt und gib dem Block als den ersten und einzigen Parameter "Server01"
08. for /f "tokens=1-3 delims=. " %%a in ('dir \\%1\c$\backup\license.log
...der auch via %1 angenommen wird...

mit deiner Variante, wo du den variablen Springblock einem - den ersten Server vorgibst.
Ergo deine Zeile 16 mit dem Aufruf
call :backup server01
wird in deiner Zeile 11
if not exist \\server01\

gar nicht ausgewertet - sprich beim ersten klappert das zwar einigermassen - bei Server x y und z aber nur per Zufall.

Gruß
Bitte warten ..
Mitglied: winlin
13.08.2010 um 15:17 Uhr
hola Timo,

ich glaube ich werde dieses Thema nun aufgeben oder ich werde erst mal laaange zeit dafür verwenden um grundlagen von batch zu lernen)))

Naja im Endeffekt wollte ich ja nur das, wenn ich meine batch auf server01 starte die license.log im selben Verzeichnis mit Angabe von DATUM UHRZEIT kopiert wird...Timo & Biber vieeeelen Dank das ihr mir helfen wolltet, ihr seit Spitze Jungs nur leider habe ich es nicht geschafft, aber viell habt ihr ja erbarmen und zeigt mir wie es richtig geht!)!
Bitte warten ..
Mitglied: Biber
13.08.2010 um 15:39 Uhr
Moin winlin,

ich habe es neulich schon in einem anderen Beitrag geschrieben...
-> der Grundgedanke von "Batch" ist eigentlich, dass du einen Schritt nach dem anderen machst.
Nicht alles durcheinander.
Im Moment gehst du mir da ein bisschen zu hektisch ran -> und dabei kannst du leicht mit dem Popo alles umreissen, was du mit den Händen aufgebaut hast.

Dehalb beschränke ich mich auf EIN Detail, nachdem du gefragt hast:

Ich meinte vorhin mit
"Die aktuelle Ortszeit deines Rechners steht in der Variablen %time%. Einfach mal "echo %time%" am Cmd-Prompt eingeben, dann siehst du das Format."
dass du NICHT den Umweg über den Aufruf von "date/t" und "time/t"-Befehlen gehen musst.
[[Dafür gibt es keinen Grund-->aber wenn du es tust, sind es Befehlsaufrufe und müssen in der FOR-Anweisungsklammer in einfache Anführungszeichen.]]

Wenn du die Variablen %date% und/oder %time% als Text auswertest, dann müssen die Variablen in der FOR-Anweisungsklammer in DOPPELTE Anführungszeichen

Dein Aufruf ist aber im Moment so:
for /f "tokens=4-6 delims=: " %%a in (time /t) do ...
--> das entspricht KEINER der beiden Syntaxvarianten.
Und nein, ich kaspere das jetzt nicht vor.
Bitte mach deinen ganz eigenen proof-of-concept am CMD-Prompt und zerlege dort %date% und %time% mit einer FOR/F-Anweisung.

Und ned huddele.... wie wir Bremer sagen. Nicht hektisch werden.

Grüße
Biber
Bitte warten ..
Mitglied: winlin
13.08.2010 um 15:51 Uhr
hehehe du bist gut huddele huddele))

naja ich glaub ich belasse es bei der DIR /tw Variante. Eigentlich reicht mir dsas ja komplett aus (zuletzt geschrieben). Und das was ich ja benötige ist das ich nachvollziehen kann wann es Änderungen in den license.log gegeben hat. So werden alle license.log Files gespeichert die geändert worden sind
Bitte warten ..
Neuester Wissensbeitrag
Festplatten, SSD, Raid

12TB written pro SSD in 2 Jahren mit RAID5 auf Hyper-VServer

Erfahrungsbericht von Lochkartenstanzer zum Thema Festplatten, SSD, Raid ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...