jweghorn
Goto Top

Batchdatei - CSV-Datei umbennen mit Zeitstempel - zweistellige Stundenanzeige

Hallo,

man hat mir hier bereits sehr geholfen, jedoch bin ich noch nicht
ganz am Ziel und ich hoffe man kann mir helfen.

Die Grundaufgabe ist die Umbenennung einer Datei über eine Batch-Datei.

Beispiel:

Vorher:
"DE.csv"

Nachher:
"DE_2014-10-06_13-57.csv"

Das Format ist zwingend einzuhalten.

Ich habe folgende Datei erstellt:

set jahr=%date:~-4%
set monat=%date:~-7,2%
set tag=%date:~-10,2%
rename Pfad\Dateiname.csv Dateiname_%date:~-4%-%date:~-7,2%-%date:~-10,2%_%time:~0,2%-%time:~3,2%.csv

Jetzt muss ich feststellen, dass oben genannte Lösung leider "nicht" im
Zeitraum 0:01 bis 09:59 funktioniert, da die Stundenzahl anscheinend
nicht zweistellig dargestellt werden kann und ich erhalten in diesem
Zeitraum einen Syntaxfehler.

Kann mir jemand sagen, wie ich den Pfad oben umstricken muss,
damit die Umbenennung auch rund um die Uhr möglich ist?

Vielen Dank für Eure erneute Hilfe.

Gruss
Jörg

Content-ID: 297318

Url: https://administrator.de/contentid/297318

Ausgedruckt am: 23.11.2024 um 02:11 Uhr

Meierjo
Meierjo 25.02.2016 aktualisiert um 10:56:01 Uhr
Goto Top
Hallo Jörg

Mit folgendem Einzeiler solltet du eigentlich eine 2 stellige Stundenanzeige ausgewiesen erhalten. Vielleicht muss du das noch deinem Ländercode anpassen
503bbedec33cf6ab19087a65d91efbed

Gruss
126919
126919 25.02.2016 aktualisiert um 10:55:13 Uhr
Goto Top
Eine zweistellige Stundenanzeige erhältst du beispielsweise so:
set stunde=%time:~0,2%
:: Leerzeichen entfernen und 0 hinzufügen
set stunde=0%stunde: =%
:: immer zwei stellen von rechts nehmen
set stunde=%stunde:~-2%
echo %stunde%
fk
jweghorn
jweghorn 25.02.2016 um 11:10:48 Uhr
Goto Top
Hallo zusammen und wieder einmal vielen Dank für Eure schnellen Antworten,

ich habe das ganze weiter recherchiert und bin auf einen Artikel hier gestoßen, wo exakt das
Problem aufgeführt wird:

https://de.wikibooks.org/wiki/Batch-Programmierung:_Programmierungshilfe ...

Darin wird zu einer if-Abfrage geraten was ich jetzt auch getan habe und auch
funktioniert hat:

Meine Lösung somit:

set jahr=%date:~-4%
set monat=%date:~-7,2%
set tag=%date:~-10,2%
set HOUR=%time:~0,2%
if "%HOUR:~0,1%"==" " set HOUR=0%HOUR:~1,6%
rename \\Pfad\DE.csv DE_%date:~-4%-%date:~-7,2%-%date:~-10,2%_%HOUR:~0,2%-%TIME:~3,2%.csv

Es funktioniert - aber ich kann die If-Zeile kein bischen erklären...

Viele Grüße und tausend Dank
Jörg
Meierjo
Meierjo 25.02.2016 um 11:21:48 Uhr
Goto Top
Hallo

set jahr=%date:~-4%
set monat=%date:~-7,2%
set tag=%date:~-10,2%
set HOUR=%time:~0,2%

Wieso extrahierst du das Datum in Jahr / Monat / Tag, wenn du es dann doch nicht verwendest??

if "%HOUR:~0,1%"==" " set HOUR=0%HOUR:~1,6%
Einfach erklärt: wenn Die Variable HOUR nur 1 Stelle enthält, wird 1 Stelle (eine 0) davor eingefügt


Gruss
jweghorn
jweghorn 25.02.2016 um 11:46:00 Uhr
Goto Top
aha,

das heißt, ich kann mir die ersten 3 Variablen sparen - korrekt?
jweghorn
jweghorn 25.02.2016 um 11:47:53 Uhr
Goto Top
auch vielen Dank für die Erklärung if...
aber wohler kommt das 1,6 ?
Meierjo
Meierjo 25.02.2016 um 15:01:48 Uhr
Goto Top
Hallo

aber wohler kommt das 1,6 ?

Siehe Erklärung von set /?
 %PATH:~10,5%

Dies erweitert die PATH-Umgebungsvariable und verwendet dann nur fünf
Zeichen ab dem elften Zeichen (Offset=10) des erweiterten Ergebnisses. Wenn die
Länge nicht angegeben ist, wird der Rest des Variablenwerts verwendet.
Wenn eine der Zahlen (Offset oder Länge) negativ ist, dann wird der angegebene
Wert der Länge des Umgebungsvariablenwerts hinzugefügt.

Gruss