matze-pe
Goto Top

Beim Verschieben eine Textdatei mit Datum anlegen

Hallo miteinander,
ich habe eine Batchdatei die mir bestimmte Dateien heraussucht und anschließend umbenennt und verschiebt.

Jetzt speichere ich den "Verschieb-Vorgang" in eine textdatei, das klappt bis hier auch super.


Jetzt möchte ich das in der Textdatei die abgespeichert wird, Datum & Uhrzeit erscheint, wann er welche Datei verschoben hat.


Wie bekomme ich das hin, dass das Datum in der Textdatei steht?


Hier mein Skript:

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

set stunde=%time:~0,2%
set minute=%time:~3,2%
set sekunde=%time:~6,2%


for /f %%i in ('dir /b  "C:\Ruskaluga\*.d01"') do move "%%i" "C:\ziel\DELJIT-A200%%~ni">>C:\RusKaluga-kopieren.txt  


Gruß
Matze

Content-Key: 117945

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

Printed on: April 24, 2024 at 06:04 o'clock

Member: pxxsxx
pxxsxx Jun 10, 2009 at 15:17:25 (UTC)
Goto Top
Hallo,
ich versteh das Ganze nicht so richtig. Warum zerlegst du Datum und Uhrzeit?

echo Die Datei %variablediedendateinamenenthält% wurde am %date% um %time% verschoben. >> C:\RusKaluga-kopieren.txt

Gruß
Peter
Member: bytecounter
bytecounter Jun 10, 2009 at 15:29:21 (UTC)
Goto Top
Moin matze-pe,

soweit ich weiß, geht das nur, wenn Du die Ausgabe nicht in eine Datei umleitest, sondern diese manuell erstellst. Da for-Schleifen nur ein Kommando enthalten dürfen, würde ich das mit einer zweiten Batch machen

...
for /f %%i in ('dir /b  "C:\Ruskaluga\*.d01"')   
do call move.bat %i

rem move.bat

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

set stunde=%time:~0,2%
set minute=%time:~3,2%
set sekunde=%time:~6,2%

@move "%1" "C:\ziel\DELJIT-A200%%~ni"  
echo move "%1" "C:\ziel\DELJIT-A200%%~ni" >>C:\RusKaluga-kopieren.txt  %jahr.%monat.%tag %stunde:%minute:%sekunde  
Mitglied: 77559
77559 Jun 10, 2009 at 15:43:17 (UTC)
Goto Top
Zitat von @bytecounter:
Moin matze-pe,

soweit ich weiß, geht das nur, wenn Du die Ausgabe nicht in eine Datei umleitest, sondern diese manuell erstellst.
Da for-Schleifen nur ein Kommando enthalten dürfen, würde ich das mit einer zweiten Batch machen
Wie kommst du denn darauf?
  • Man kann mehrere Befehle in einer Zeile mit & hintereinander hängen,
  • Man kann mehrere Zeilen in Klammern hinter das Do setzen
  • Man kann ohne externe Datei eine interne Sub aufrufen, so wie dies hier:

@Echo off
Setlocal
Set Log=^>^>"C:\RusKaluga-kopieren.txt"  
Set "Mask=C:\Ruskaluga\*.d01"  
for /f %%i in ('dir /b  "%Mask%"') do Call :MoveLog "%~fi"  
Goto :Eof
:MoveLog
set DTStamp=%date:~-4%-%date:~-7,2%-%date:~-10,2% 
%Log% set /P =%DTStamp%_%time:~0,8% <NUL
%Log% move %1 "C:\ziel\DELJIT-A200%~n1"  
Goto :Eof

Gruß
LotPings
Member: pieh-ejdsch
pieh-ejdsch Jun 10, 2009 at 18:43:51 (UTC)
Goto Top
Zitat von @matze-pe:
for /f %%i in ('dir /b "C:\Ruskaluga\*.d01"') do move "%%i" "C:\ziel\DELJIT-A200%%~ni">>C:\RusKaluga-kopieren.txt
ähhm was steht dann hier in Deiner Txt drin???


Mach das mal so hier
for /f %%i in ('dir /b  "C:\Ruskaluga\*.d01"') do (  
	move "%%i" "C:\ziel\DELJIT-A200%%~ni"  
	echo %date:~-4%%date:~-7,2%%date:~-10,2%%time:~0,2%%time:~3,2%%time:~6,2% "%%i" "C:\ziel\DELJIT-A200%%~ni" >>C:\RusKaluga-kopieren.txt  
) 

das Ihr euern code immer so aufblasen müsst - versteh ich net...
Member: matze-pe
matze-pe Jun 10, 2009 at 19:34:38 (UTC)
Goto Top
Hallo miteinander,
vielen Dank für Eure schnelle Hilfe face-smile


Schönen Abend


Gruß
Matze
Member: bastla
bastla Jun 10, 2009 at 20:46:10 (UTC)
Goto Top
@pieh-ejdsch
Nur als Anmerkung: Bei dieser Variante wird natürlich für jede Datei die selbe Zeit eingetragen, aber auf die paar Sekunden Unterschied dürfte es wohl nicht ankommen (bzw ist das dann sogar als "Feature" zu verkaufen face-wink) ...

Grüße
bastla
Member: pieh-ejdsch
pieh-ejdsch Jun 10, 2009 at 23:16:47 (UTC)
Goto Top
@bastla
wusst ich gar nicht das die Zeit in der Forschleife bzw in der Klammer danach stehenbleibt.
Dann wirds halt als "undocumented Feature" (gibts den Begriff überhaupt?) verkauft.

Für die Fragen die noch nicht beantwortet wurden
Zitat von @pxxsxx:
ich versteh das Ganze nicht so richtig. Warum zerlegst du Datum und
Uhrzeit?
Ich denke mal damit man eine bessere sortierung hat nach

JJJJMMTTStundeMinuteSekunde

- ohne doppelpunkte
Meine Photos sind auch fast so nach dem Muster benannt da kommt man ein bisschen besser zurecht.

Aber ich hab Dann auch noch eine ...
Zitat von @bytecounter:
Zeile 12
echo move "%1" "C:\ziel\DELJIT-A200%%~ni" >>C:\RusKaluga-kopieren.txt %jahr.%monat.%tag %stunde:%minute:%sekunde
... Frage ! Wat soll das denn?
Batchparameter mit gekoppeltem VersuchsVariablen???? Dazu noch hinter dem Dateinamen - das bringt doch nix... wenn dann soherum und richtig Deine Zeile 12
echo move "%1" "C:\ziel\DELJIT-A200%%~ni"%jahr%.%monat%.%tag% %stunde%:%minute%:%sekunde%>>C:\RusKaluga-kopieren.txt   
sonst ists gut so.

Gruß PH
Member: bastla
bastla Jun 11, 2009 at 05:23:49 (UTC)
Goto Top
@ph
Die Variablenauflösung von %date% und %time%, aber auch etwa %random%, erfolgt wie bei "gewöhnlichen" Variablen nur zu Beginn der Schleife - wenn innerhalb der Schleife die aktuellen Werte verwendet werden sollen, müsste zu "delayedExpansion" oder einem Unterprogramm gegriffen werden ...

Grüße
bastla