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-Key: 297318

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

Printed on: April 16, 2024 at 20:04 o'clock

Member: Meierjo
Meierjo Feb 25, 2016 updated at 09:56:01 (UTC)
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
Mitglied: 126919
126919 Feb 25, 2016 updated at 09:55:13 (UTC)
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
Member: jweghorn
jweghorn Feb 25, 2016 at 10:10:48 (UTC)
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
Member: Meierjo
Meierjo Feb 25, 2016 at 10:21:48 (UTC)
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
Member: jweghorn
jweghorn Feb 25, 2016 at 10:46:00 (UTC)
Goto Top
aha,

das heißt, ich kann mir die ersten 3 Variablen sparen - korrekt?
Member: jweghorn
jweghorn Feb 25, 2016 at 10:47:53 (UTC)
Goto Top
auch vielen Dank für die Erklärung if...
aber wohler kommt das 1,6 ?
Member: Meierjo
Meierjo Feb 25, 2016 at 14:01:48 (UTC)
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