2016-05-03 12 views
0

Ich habe eine Batch-Datei, die eine Token-Datei des Namensformats xyz_yyyyddmmhhmmss (Hinzufügen von Zeitstempel) basierend auf einigen Bedingungen erstellt. Problem ist, wenn die Token-Datei von 0:00 bis 9:59 erstellt wird, der Zeitteil des Dateinamens besteht aus 5 Ziffern und ansonsten aus 6 Ziffern. Es wird davon verlangt, um von 6 Ziffern zu bleiben.Batch-Datei zum Erstellen einer Datei mit Zeitstempel

for /f "tokens=1 delims=/ " %%j in ("%date%") do set d1=%%j 
    for /f "tokens=2 delims=/ " %%j in ("%date%") do set d2=%%j 
    for /f "tokens=3 delims=/ " %%j in ("%date%") do set d3=%%j 
    for /f "tokens=4 delims=/ " %%j in ("%date%") do set d4=%%j 
    for /f "tokens=1 delims=: " %%j in ("%time%") do set t1=%%j 
    for /f "tokens=2 delims=: " %%j in ("%time%") do set t2=%%j 
    for /f "tokens=3 delims=:. " %%j in ("%time%") do set t3=%%j 


    if exist %1xyz_*.tkn (del %1xyz_*.tkn 
    dir %1*.txt>%1xyz_%d4%%d2%%d3%%t1%%t2%%t3%.tkn) 
    if not exist %xyz_*.tkn (dir %1*.txt>%1xyz_%d4%%d2%%d3%%t1%%t2%%t3%.tkn) 

Bitte geben Sie Ihre Eingaben.

Danke!

+0

Sie verwenden sollten, 'für/F "tokens = 1-7 delims = /.," %% I in ("% date%,% time%") stelle "d1 = %% I" & setze "d2 = %% J" & setze "d3 = %% K" & setze "d4 = %% L" & setze "t1 = %% M" & setze "t2 = %% N" '& setze" t3 = %% O "' '; Andernfalls, wenn Sie Ihren Code sehr kurz vor Mitternacht ausführen und "% date%" /% "time%" mehrmals lesen, erhalten Sie möglicherweise unerwartete Ergebnisse. Beachten Sie, dass '% date%' und '% time%' Datum und Uhrzeit in einem Format abhängig von Ihren Gebietsschemaeinstellungen zurückgeben ... – aschipfl

+0

Wenn möglich, sollten Sie eine Lösung bevorzugen, die unabhängig von lokalen Einstellungen ist [wie diese] (http : //stackoverflow.com/a/18024049/2152082) – Stephan

Antwort

0

Vor langer, langer Zeit fand ich die Basis irgendwo (ziemlich sicher nicht SO), machte einige Änderungen daran und habe es in fast jede Batch-Datei eingefügt, die ich seitdem geschrieben habe. Ich bin mir nicht sicher, ob ich je verstanden habe, wie es funktioniert, aber es funktioniert. Sie sollten in der Lage sein, es ohne zu viel Mühe an Ihr Format anzupassen.

REM Creates a string in the form of YYYYMMDD-hhmm, with no embedded spaces 
SET hh=%time:~0,2% 
IF "%time:~0,1%"==" " SET hh=0%hh:~1,1% 
SET DateString=%date:~10,4%%date:~4,2%%date:~7,2%-%hh%%time:~3,2%