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, 8783 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 ..
Ähnliche Inhalte
Router & Routing
Cisco ios IPSEC not time to kick IKE

Frage von pppp666 zum Thema Router & Routing ...

VB for Applications
gelöst Bestimmtes Arrayfeld mit Variable aufrufen? - VBS (10)

Frage von gabrixl zum Thema VB for Applications ...

Neue Wissensbeiträge
Windows 10

Windows 8.x oder 10 Lizenz-Key aus dem ROM auslesen mit Linux

(2)

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(38)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Heiß diskutierte Inhalte
Festplatten, SSD, Raid
POS Hardware und alternativen zu Raid 1? (21)

Frage von Brotkasten zum Thema Festplatten, SSD, Raid ...

Viren und Trojaner
Verschlüsselungstrojaner simulieren (18)

Frage von AlbertMinrich zum Thema Viren und Trojaner ...

Windows 10
Windows 10 Home "Netzlaufwerk nicht bereit" (12)

Frage von Oggy01 zum Thema Windows 10 ...

Exchange Server
Exchange Postfach leeren - nicht löschen (10)

Frage von AndreasOC zum Thema Exchange Server ...