Batch-Datei erstellen, um Datei mit aktuellem Datum abzuspeichern
[Edit] * auf "Gelöst" gesetzt. Diese Frage wird auch im Tutorial "Umgang mit Datums- und Zeitvariablen im Batch" hier im Bereich "Batch und Shell" diskutiert. *** Biber, 20.7.2006 [/Edit]
Hallo zusammen,
ich möchte täglich eine immer gleich lautende Datei "cas.dat" per Batch-Datei umbenennen lassen. Es soll daraus eine "cas20041209.bat" (nach dem DatumsFormat yyyymmtt)werden.
Wie lautet eine Befehlszeile dazu? Danke.
Hallo zusammen,
ich möchte täglich eine immer gleich lautende Datei "cas.dat" per Batch-Datei umbenennen lassen. Es soll daraus eine "cas20041209.bat" (nach dem DatumsFormat yyyymmtt)werden.
Wie lautet eine Befehlszeile dazu? Danke.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 4664
Url: https://administrator.de/contentid/4664
Ausgedruckt am: 24.11.2024 um 19:11 Uhr
24 Kommentare
Neuester Kommentar
FOR /F "tokens=1,2,3,4,5 delims=/. " %%a in ('date/T') do set CDATE=%%b%%c%%d
echo %cdate%
ren textdatei2.txt textdatei%cdate%.txt
ich dürfte erstens zu schnell gewesen sein, zweitens sind die batch-sachen
auch nicht mehr so oft gefragt.
die Zeitle mit echo %cdate% ist nur testhalber drin ob das Datum stimmt, kannst du
dann rausschmeissen.
gruss
echo %cdate%
ren textdatei2.txt textdatei%cdate%.txt
ich dürfte erstens zu schnell gewesen sein, zweitens sind die batch-sachen
auch nicht mehr so oft gefragt.
die Zeitle mit echo %cdate% ist nur testhalber drin ob das Datum stimmt, kannst du
dann rausschmeissen.
gruss
Nachtrag
mit folgender kannst du beliebige .txt dateien unbenennen
ich hab sie datum.bat genannt - Aufruf also datum Dateiname.txt
FOR /F "tokens=1,2,3,4,5 delims=/. " %%a in ('date/T') do set CDate=%%b%%c%%d
echo %cdate%
pause
ren %1 %~n1%cdate%.txt
mit dieser überhaupt beliebige - Aufruf:
datum Dateiname Dateieindung
FOR /F "tokens=1,2,3,4,5 delims=/. " %%a in ('date/T') do set CDate=%%b%%c%%d
echo %cdate%
pause
ren %1 %~n1%cdate%.%2
tschau
mit folgender kannst du beliebige .txt dateien unbenennen
ich hab sie datum.bat genannt - Aufruf also datum Dateiname.txt
FOR /F "tokens=1,2,3,4,5 delims=/. " %%a in ('date/T') do set CDate=%%b%%c%%d
echo %cdate%
pause
ren %1 %~n1%cdate%.txt
mit dieser überhaupt beliebige - Aufruf:
datum Dateiname Dateieindung
FOR /F "tokens=1,2,3,4,5 delims=/. " %%a in ('date/T') do set CDate=%%b%%c%%d
echo %cdate%
pause
ren %1 %~n1%cdate%.%2
tschau
Hallo Alaska,
bekommt man damit auch irgendwie den Wochentag raus?
Im übrigen hätte man das mit dem Datum auch so machen können:
[...]
set jahr=%date:~-4%
set monat=%date:~-7,2%
set tag=%date:~-10,2%
echo foo> %jahr%-%monat%-%tag%.txt
[...]
Auch mit den Wochentag konnte ich bisher immer aus dem date rausfischen, allerdings klappt das nicht mehr auf windows2003server. Hast du da eine Idee?
Grüße,
T. Lindner
bekommt man damit auch irgendwie den Wochentag raus?
Im übrigen hätte man das mit dem Datum auch so machen können:
[...]
set jahr=%date:~-4%
set monat=%date:~-7,2%
set tag=%date:~-10,2%
echo foo> %jahr%-%monat%-%tag%.txt
[...]
Auch mit den Wochentag konnte ich bisher immer aus dem date rausfischen, allerdings klappt das nicht mehr auf windows2003server. Hast du da eine Idee?
Grüße,
T. Lindner
@alaska
ja, meistens klappt das...
Ist aber abhängig von den Länderspezifischen Einstellungn / Regional Settings.
Bei mir (XP Prof):
<= 9:29:43 E:\=>
Geben Sie das neue Datum ein: (TT-MM-JJ)
---
Nix mit Wochentag.
Aber mit den "richtigen" Einstellungen klappt Deine Lösung natürlich wunderbar.
Grüße
Frank / der Biber aus Bremen
ja, meistens klappt das...
Ist aber abhängig von den Länderspezifischen Einstellungn / Regional Settings.
Bei mir (XP Prof):
<= 9:29:43 E:\=>
echo.|date
Aktuelles Datum: 01.09.2005Geben Sie das neue Datum ein: (TT-MM-JJ)
---
Nix mit Wochentag.
Aber mit den "richtigen" Einstellungen klappt Deine Lösung natürlich wunderbar.
Grüße
Frank / der Biber aus Bremen
Wie wär es hiermit???
Damit kann man so vielen Dateien das Datum anhängen wie man will.
aus 'text.txt' wird 'text.20051031.txt' .
Erklärung:
Einfach die gewünschten Dateien auf die Batchdatei ziehen.
:: *STARTDatum_in_Dateiname.bat
@echo OFF
FOR /F "tokens=1,2,3,4,5 delims=/. " %%a in ('date/T') do set CDATE=%%d%%c%%b%%a
@echo %cdate%
:start
ren %1 "%~n1.%cdate%%~x1"
if exist %2 goto weiter
goto EOF
:weiter
shift
goto start
:EOF
:: *STOP
Fehlt nur noch eine Möglichkeit Ordner oder alle Dateien in einem Ordner umzubenennen.
Grüße, Tangus
Damit kann man so vielen Dateien das Datum anhängen wie man will.
aus 'text.txt' wird 'text.20051031.txt' .
Erklärung:
Einfach die gewünschten Dateien auf die Batchdatei ziehen.
:: *STARTDatum_in_Dateiname.bat
@echo OFF
FOR /F "tokens=1,2,3,4,5 delims=/. " %%a in ('date/T') do set CDATE=%%d%%c%%b%%a
@echo %cdate%
:start
ren %1 "%~n1.%cdate%%~x1"
if exist %2 goto weiter
goto EOF
:weiter
shift
goto start
:EOF
:: *STOP
Fehlt nur noch eine Möglichkeit Ordner oder alle Dateien in einem Ordner umzubenennen.
Grüße, Tangus
@tangus
Im Prinzip ja, aber leider Betriebssytem-, Länder- und Usereinstellungsabhängig:
Windows-Version: Win2000 dt
Ich hatte mal ein paar Zeilen Batch-Tutorial dazu geschrieben.
Dein Batch passt schon fast immer.
Wenn ich den Parameter %%a am Ende der DO-Anweisung weglasse (den Wochentag) läuft es bei mir auch. Oder wenn ich nur Tokens 2,3,4 nehme und nur %%c%%b%%a
~~~
14.10.2005 22:46 4.514 Benutzer.20051017.txt
~~~
Aber der Ansatz ist gut... das Ganze noch per Batch oder VBSkript ins Kontext-Menü aufnehmen lassen.. ist sicher hilfreich in vielen Fällen.
Grüße
Biber
Im Prinzip ja, aber leider Betriebssytem-, Länder- und Usereinstellungsabhängig:
>dir ben*.txt
Verzeichnis von Z:\
14.10.2005 22:46 4.514 Benutzer.txt
16.10.2005 23:14 548 benutzer1.txt
Z:\>
>renmitDatum.bat Benutzer.txt
20051017♀Mo
Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung
ist falsch.
Windows-Version: Win2000 dt
date/t
Mo 17.10.2005Ich hatte mal ein paar Zeilen Batch-Tutorial dazu geschrieben.
Dein Batch passt schon fast immer.
Wenn ich den Parameter %%a am Ende der DO-Anweisung weglasse (den Wochentag) läuft es bei mir auch. Oder wenn ich nur Tokens 2,3,4 nehme und nur %%c%%b%%a
~~~
14.10.2005 22:46 4.514 Benutzer.20051017.txt
~~~
Aber der Ansatz ist gut... das Ganze noch per Batch oder VBSkript ins Kontext-Menü aufnehmen lassen.. ist sicher hilfreich in vielen Fällen.
Grüße
Biber
Hallo zusammen
Es ist zwar schon länger kein Eintrag hinzugekommen aber ich versuche es direkt hier weil sich meine Frage um diese Batch Datei handelt. Erstmals vielen Dank für die tollen Erklärungen und Hinweise.
Leider komme ich selber nicht weiter....
Die Batch Datei ist genau nachdem ich gesucht habe. Ich benötige jedoch noch die Sekunden in der Datei.
Besten Dank für eure Hilfe.
Gruss Zufi
Es ist zwar schon länger kein Eintrag hinzugekommen aber ich versuche es direkt hier weil sich meine Frage um diese Batch Datei handelt. Erstmals vielen Dank für die tollen Erklärungen und Hinweise.
Leider komme ich selber nicht weiter....
Die Batch Datei ist genau nachdem ich gesucht habe. Ich benötige jedoch noch die Sekunden in der Datei.
Besten Dank für eure Hilfe.
Gruss Zufi
Moin Alik,
läuft eigentlich analog zu der Wie-bringe-ich-Sekunden-da-unter?-Frage.
Beispiel am CMD-Prompt:
Inm Bereich "Batch und Shell" befindet sich auch ein Tutorial zu dem Thema "Umgang mit Datums- und Zeitvariablen im Batch".
Ich setze jetzt mal diesen Beitrag hier auf "Gelöst".
Hope That Helps
Biber
läuft eigentlich analog zu der Wie-bringe-ich-Sekunden-da-unter?-Frage.
Beispiel am CMD-Prompt:
(=15:45:37 D:\temp=)
>echo %date% %time%
20.07.2006 15:45:45,79
(=15:45:45 D:\temp=)
>for /f "delims=.,: tokens=1-5" %a in ("%date%,%time%") do @echo %a %b %c %d %e
20 07 2006 15 45
(=15:45:50 D:\temp=)
>for /f "delims=.,: tokens=1-5" %a in ("%date%,%time%") do @echo %c-%b-%a_%d %e
2006-07-20_15 46
(=15:46:05 D:\temp=)
>for /f "delims=.,: tokens=1-5" %a in ("%date%,%time%") do @echo %c-%b-%a_%d_%e
2006-07-20_15_46
Inm Bereich "Batch und Shell" befindet sich auch ein Tutorial zu dem Thema "Umgang mit Datums- und Zeitvariablen im Batch".
Ich setze jetzt mal diesen Beitrag hier auf "Gelöst".
Hope That Helps
Biber
Ja und?
Wenn Dir das zu unübersichtlich ist mit Datum und Zeit in der FOR-Klammer, dann hol die Minuten aus einer Extra-For-Zeile.
Soooo teuer ist ja nun der durch eine zusätzliche Batch-Zeile verbrauchte Plattenplatz nun auch nicht mehr....
Wenn Dir das zu unübersichtlich ist mit Datum und Zeit in der FOR-Klammer, dann hol die Minuten aus einer Extra-For-Zeile.
Soooo teuer ist ja nun der durch eine zusätzliche Batch-Zeile verbrauchte Plattenplatz nun auch nicht mehr....
:: Minuten.bat
for /f "delims=: tokens=2" %%i in ("%time%") do Set "Minuten=%%~i"
Echo Zeit ist %time%, Minuten sind %Minuten%