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

%Time% Variable ändert sich nicht.

Frage Entwicklung Batch & Shell

Mitglied: miniversum

miniversum (Level 3) - Jetzt verbinden

12.05.2006, aktualisiert 11:48 Uhr, 8768 Aufrufe, 3 Kommentare

%Time Variabel innerhalb einer Batch Datei immer gleich

Hallo
Ich habe hier einen Ausschnitt aus einer Batch Datei dieich gerade Schreibe:

FOR /F "eol=; tokens=1* delims=" %%a in (Optionen.txt) do (
echo %%a wird gestartet
echo Option %%a: >> %Logfile%
echo %Date%%Time%: Programm gestartet
echo %Date%%Time%: Programm gestartet >> %Logfile%
C:\Programm.exe %%a
echo %Date%%Time%: Programm beendet
echo %Date%%Time%: Programm beendet >> %Logfile%
echo.
echo. >> %Logfile%
)

Dabei sollen, wie man sehen kann, immer wieder Statusmeldungen mit dem aktuellen Datum und der aktuellen Zeit ausgegeben werden und in einem Logfile gespeichert werden.
Mein Problem ist, das die Zeit die ausgegeben und gespeichert wird vor und nach dem ausführen des Programms gleich ist. Auch bei mehrmaligem durchlaufen der For-Schleife wird immer die gleiche Zeit angezeigt.
Die ausführung des Programms ansich dauert schon mehrere Sekunden bis einige Minuten. Die Meldungen auf der Konsole erscheinen auch wirklich immer vor und nach dem Programmaufruf. Was sit das Problem?

miniversum
Mitglied: Dani
12.05.2006 um 10:18 Uhr
Hi,
probiers mal so:
01.
start C:\Programm.exe %%a /wait

Gruß
Dani
Bitte warten ..
Mitglied: Biber
12.05.2006 um 10:38 Uhr
Moin miniversum,

Du hast zwar optisch den Batch auf mehrere Zeilen auseinandergezogen, dennoch ist für den CMD-Interpreter nach wie vor alles eine Programmzeile, was innerhalb der KlammerAuf/KlammerZu-Konstruktion steht.
Das heißt, die Variable %tinme% wird auch einmal aufgelöst, nämlich dann, wenn die For-In-Do-Anweisung mit dem ersten Element losrennt.

Zwei Möglichkeiten:
a)
01.
FOR /F "eol=; tokens=1* delims=" %%a in (Optionen.txt) do call :ThisElement 
02.
goto :eof 
03.
:ThisElement FOr-Parmeter %%a kommt als %1 an 
04.
echo %%a wird gestartet 
05.
echo Option %1: >> %Logfile% 
06.
echo %Date%%Time%: Programm gestartet 
07.
echo %Date%%Time%: Programm gestartet >> %Logfile% 
08.
C:\Programm.exe %1 
09.
echo %Date%%Time%: Programm beendet 
10.
echo %Date%%Time%: Programm beendet >> %Logfile% 
11.
echo. 
12.
echo. >> %Logfile% 
13.
goto :eof
-oder-
b) Mit DelayedExpansion arbeiten:
01.
Setlocal EnableDelayedExpansion 
02.
FOR /F "eol=; tokens=1* delims=" %%a in (Optionen.txt) do ( 
03.
echo %%a wird gestartet 
04.
echo Option %%a: >> %Logfile% 
05.
echo %Date%!Time!: Programm gestartet 
06.
echo %Date%!Time!: Programm gestartet >> %Logfile% 
07.
C:\Programm.exe %%a 
08.
echo %Date%!Time!: Programm beendet 
09.
echo %Date%!Time!: Programm beendet >> %Logfile% 
10.
echo. 
11.
echo. >> %Logfile% 
12.
)
(Genau genommen müsstest Du auch jeweils !date! statt %date% schreiben, aber so oft wird der Batch nicht um Mitternacht herum laufen.)

Hope That Helps
Biber
Bitte warten ..
Mitglied: miniversum
12.05.2006 um 11:48 Uhr
Danke Biber
Das mit dem Setlocal wars!
Hab am Ende noch ein endlocal gesetzt

miniversum
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
gelöst Mit zusammengesetzter Variable auf andere Variable zugreifen (2)

Frage von abiber zum Thema Batch & Shell ...

Ubuntu
gelöst PHP-Version mit Bash in Variable schreiben? (11)

Frage von StefanKittel zum Thema Ubuntu ...

Batch & Shell
gelöst Powershell Variable mit einem Operator versehen (11)

Frage von pixel0815 zum Thema Batch & Shell ...

PHP
gelöst TXT Datei auslesen und bestimmte Zeilen in Variable setzen (11)

Frage von 126594 zum Thema PHP ...

Heiß diskutierte Inhalte
Erkennung und -Abwehr
Virenschutz - Meinungen (24)

Frage von honeybee zum Thema Erkennung und -Abwehr ...

Windows 10
Welches OS für Firmengeräte? (17)

Frage von MarkusVH zum Thema Windows 10 ...

Server-Hardware
Erfahrungswerte Hardwaresupport physikalische Server (14)

Frage von Devilx zum Thema Server-Hardware ...

Exchange Server
SBS2011: POP3-Connector 10 MB Grenze Email Benachrichtigung (14)

Frage von bogi1102 zum Thema Exchange Server ...