Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Erstellungsdatum auslesen und als neuen Dateinamen verwenden

Frage Entwicklung Batch & Shell

Mitglied: hasenfuss

hasenfuss (Level 1) - Jetzt verbinden

31.08.2005, aktualisiert 19.10.2006, 23146 Aufrufe, 20 Kommentare

Hallo,

ich habe folgendes Problem:

Ich möchte aus einem Ordner Dateien umbennen. Der neue Name soll das Erstellungsdatum und die Uhrzeit sein. Ich habe mir schon eine Batchdatei gebastelt und kann auch dieses Datum auslesen:

for %%f in ("verzeichniss") do echo %%f: %%~tf

Leider bekomme ich das Datum in tt:mm:jjjj Form zurück. Die Forum jjjj:mm:tt hh:ss wäre aber 1000 mal besser, sonst werden die Dateien wild durcheinander geworfen.
Außerdem hab ich noch das Problem dass z. B. bei:

for %%f in ("dir") do rename %%f %%~tf.doc

nur einen Syntaxfehler angezeigt bekomme, weil das Datum und die Uhrzeit mit einem Leerzeichen getrennt sind.

Ich bin jeder Anregung dankbar. Vielen Dank im Voraus.

Hasenfuss
Mitglied: Biber
31.08.2005 um 09:13 Uhr
Moin, hasenfuss,

1.) wenn Du tatsächlich das Erstellungsdatum haben willst, musst du einen anderen Weg gehen. Die "%%~t.." -Option des FOR..IN..DO..-Befehls zeigt immer das letzte Änderungsdatum.

Du müsstest also schon anders anfangen. Hier noch mal der Unterschied:

<= 8:46:24 C:\Dokumente und Einstellungen\Biber=>a) Änderungsdatum
>for /F "delims=" %f in ('dir /a-D /-C logfile*.*^|find "."') do @echo %f
20.06.2005 16:54 322 logfile
20.06.2005 16:54 500 logfile1

<= 8:46:57 C:\Dokumente und Einstellungen\Biber=>b) Erstellungsdatum
>for /F "delims=" %f in ('dir /a-D /Tc /-C logfile*.*^|find "."') do @echo %f
09.05.2005 10:40 322 logfile
10.05.2005 10:54 500 logfile1

2.) Aber auch im Fall "Änderungsdatum" wird es schwierig, das als Einzeiler zu machen.
Egal welches Datum, du musst die Datums/Zeitwerte des Dir-Outputs in einer Variable speichern und kannst erst dann alle Substring-Frunktionen darauf anwenden, um Dir das in die Reihenfolge JJJJ-MM-TT hh-min zu bringen.

Also im Batch ungefähr:
...---(Ungetestete Skizze renameMitDatum.dat)
for /F %%f in ('dir /a-D /Tc /-C ^|find "."') do call :loop %%f %g %h %i
goto HauInsMett
:loop
Echo (Debug) Datei: %4 Cr-Datum/Zeit: %1 %2
set DirDatetime=%1%2
set MyDateTime=%DirDateTime:~6,4%-%DirDateTime:~3,2% ....usw
REM MydateTime im Format JJJJ-MM ....usw
rename %~f4 %MyDateTime%%~x4
goto :eof
Anmerkung
%~f4 bedeutet vollständiger Dateiname der (Original-)Datei
%~x4 bedeutet Endung der (Original-)Datei
:hauInsMett
----Ende von---(Ungetestete Skizze renameMitDatum.dat)

3)
>nur einen Syntaxfehler angezeigt bekomme, weil das Datum und die Uhrzeit mit einem Leerzeichen getrennt sind.
Die Leerzeichen macht wenig aus. Problem sind die ":" in der Zeitangabe als unerlaubte Zeichen.

HTH
Frank / der Biber aus Bremen
Bitte warten ..
Mitglied: Metzger-MCP
31.08.2005 um 11:06 Uhr
Leute es geht auch relativ einfach anders.

Ich weis zwa nicht welche Funktion ich wie für welches Feld wann angeben muß, aber
denoch gibt es einen einfachen Weg, der am Anfang ein bissel aufwendiger ist, am Ende
aber simple un immer wieder verwendbar.

Lese doch die Dateinamen und alle nötigen Werte aus und lasse Sie dann in eine Datei schreiben.

Dir c:\ > root.txt

Importiere dir diese Datei in Excel so ( Blatt 1 ), das du für jede Info eine eigene Spalte hast ( Leerstelle als Trennzeichen oder ). Nun kannst du dir die deine Informationen wie du Sie brauchst im Blatt 2 Spaltenweise sortieren. Zum Schluss brauchst du dir nur auf Blatt 3 alles passent verketten. ( Hier kann dann stehen REN "c:\1234567" "c:\237647234" )
Dies kanst du dir dann wieder in eine txt Datei exportieren, umbenennen. Ausführen.

Mit freundlichen Grüßen Metzger
Bitte warten ..
Mitglied: Biber
31.08.2005 um 11:21 Uhr
@Metzger
Ist natürlich einfacher als ein Doppelklick auf einen Batch oder das automatische Starten des Batches als Dienst *lachtsichwech*..

Thx für den Hinweis - ich halt mich gern etwas zurück mit den Bätchen.
Habe noch ein oder zwei andere Hobbies gottseidank.
Bitte warten ..
Mitglied: Metzger-MCP
31.08.2005 um 11:40 Uhr
So sollte das nicht gemeint sein, schreibe und poste ruhig weiter gute Bätchen !

Batchdatein ausführen, manual oder als service ist natürlich einfacher als imort export ...

Ich denke nur, bei meiner Lösung kann man schauen ob alles wirklich so aussieht wie es sein soll, bevor ich etwas umbenenne. Nicht jeder ist so ein Batch Fachmann wie deiner einer, obwohl ich auch noch aus den guten alten Dos 5.0 Zeiten komme.

Denke mit mehrere Lösungen muß man nicht unbedingt schlechter Leben oder ???

Mit freundlichen Grüßen Metzger
Bitte warten ..
Mitglied: Biber
31.08.2005 um 13:19 Uhr
@Metzger

Keine Sorge, ich war nicht ernsthaft geknickt..
aber bei dieser speziellen Anforderung (in einem bestimmten Ordner alle Dateien mit Zeitstempel umbenennen/ wegkopieren) - da bietet sich schon eine Batchlösung an, weil..

- gibt wenig, was ich manuell "richtiger" machen kann als ein einmal festgeschriebener Algorithmus

- ich habe keinen Verwaltungsaufwand (der Stress bei der Excel-Lösung geht spätestens dann los, wenn ich 2 ausgedruckte Versionen der 2x3 Seiten nebeneinander halte oder versuche, eine Datei wiederzufinden, die nun doch manuell einen vollkommen anderen Namen zugewiesen bekommen hat)

- und drittens: selbst wenn die Batchskizze noch ein wenig verfeinert wird (die Umkopier/Umbenennklamotte mitprotokollieren oder ähnliche nice-to-haves)
..auf mehr als 30 oder 35 Zeilen kann man/frau das Bätchelchen gar nicht aufblasen, auch wenn die Kommentarzeilen in Limerickform geschrieben werden. Das halte ich noch für einen kalkulierbaren Aufwand, den ich der täglichen/wöchentlichen Zeitersparnis gegenüberstellen kann

Wo ich Dir aber sicherlich recht gebe:
Der erste selbstgeschiebene Batch dauert wesentlich länger, als den ganzen Vorgang 20x hintereinander manuell abzufackeln und
mehrere Lösungswege sind natürlich besser einer oder als immer eine Standard-Antwort auf alle Probleme zu geben. Bin da auch nicht fanatisch. Die Anzahl der geposteten Fragen, zu denen ich keinen Oneliner-Batch aufdränge ist nachweislich höher als die, wo ich das als sinnvoll/wartbar/variabel genug vertrete.

Liebe Grüße auch ausdrücklich an alle Excelaner, VB-, Java- und PHP-Scripter und KiXtarterInnen
Biber
Bitte warten ..
Mitglied: hasenfuss
31.08.2005 um 13:29 Uhr
Hallo,

erstmal vielen Dank für die Lösungsvorschläge. Ich hab jetzt nur noch ein kleines Problem. Bei:

rename %~f4 %MyDateTime%%~x4

kommt die Fehlermeldung Syntaxfehler, mit %~f4 erscheint der Ursprungsdateiname nicht, sondern nur ein Leerzeichen. Kann ich Uhrzeit auch noch anhängen ?

Die Lösung mit der Exeltabelle find ich auch nicht schlecht, ich werde entweder in Access oder Exel war basteln, um die Daten schneller und einfacher wieder zu finden.

Ich bin euch echt dankbar, weil ich dieses Problem schon sehr lange mitschleppe und bisher keine vernünftige Lösung gefunden habe.

Viele Grüße

hasenfuss
Bitte warten ..
Mitglied: Metzger-MCP
31.08.2005 um 14:07 Uhr
EIN LOB

Juhuu

Mit freundlichen Grüßen Metzger

Ps dieser Kommentar kann gefahrlos überlesen werden und ist der sache nicht dienlich.
Bitte warten ..
Mitglied: Biber
31.08.2005 um 14:21 Uhr
Sorry, hasenfuss,
das kommt vom nicht testen:#


STREICHE: for /F %%f in ('dir /a-D /Tc /-C ^|find "."') do call :loop %%f %g %h %i
SETZE......: for /F %%f in ('dir /a-D /Tc /-C ^|find "."') do call :loop %%f %%g %%h %%i

Da fehlten ein paar %-Zeichen.
Dann hast Du auch die "Zeit" dabei (Loop-Parameter %2 bzw. rechte Hälfte von %MyDateTime%). Müsstest Du an der "(Debug)"-Meldung sehen jetzt

Nun sollte es besser klappen (ist aber nach wie vor ungetestet!) Biber
Bitte warten ..
Mitglied: hasenfuss
31.08.2005 um 14:41 Uhr
Hallo,

nochmal vielen Dank für die Mühe. Aber leider hat sich nichts verändert. Außerdem stimmt es mit dem Datum nicht. Er "dreht" nur das aktuelle um.

for /F %%f in ('dir /a-D /Tc /-C ^|find "."') do call :loop %%f %%g %%h %%i
goto HauInsMett
:loop
Echo (Debug) Datei: %4 Cr-Datum/Zeit: %1 %2
set DirDatetime=%1%2
set MyDateTime=%DirDateTime:~6,4%-%DirDateTime:~3,2%-%DirDateTime:~0,2%
REM MydateTime im Format JJJJ-MM ....usw
rename %~f4 %MyDateTime%%~x4
goto :eof
:hauInsMett
----Ende von---(Ungetestete Skizze renameMitDatum.dat)

Ich bin leider in Batch überhaupt nicht fit. Hoffentlich werd ich euch nicht lästig.

Viele Grüße

Hasenfuss
Bitte warten ..
Mitglied: Gibbon
31.08.2005 um 15:09 Uhr
Hi,

vielleicht hilft dir meine Lösung weiter. ich habe statt den Doppelpunkten bei der Uhrzeit die jeweilige Abkürzung davor geschrieben.

for /F "tokens=1,2,3 delims=. " %%a in ('date /t') do set TIMESTAMP=%%c%%b%%a
for /F "tokens=1,2,3,4 delims=:, " %%a in ('echo %TIME%') do set TIMESTAMP=%TIMESTAMP%_h%%am%%bs%%cms%%d

for /F "delims=. tokens=1,2" %%i in ('dir testordner\ /b') do ren testordner\%%i.%%j %TIMESTAMP%.%%j
Bitte warten ..
Mitglied: Biber
31.08.2005 um 15:10 Uhr
*grummelbrummelbrummel*
--------snipp RenamemitDatumSkizzeGetestet.bat--------------
@Echo off & setlocal
for /F "Tokens=1*" %%f in ('dir /a-D /Tc /-C ^|find "."') do call :loop %%f %%g %%h %%i
goto HauInsMett
:loop
Echo (Debug) Datei: %4 Cr-Datum/Zeit: %1 %2
set DirDatetime=%1%2

REM MydateTime im Format JJJJ-MM ....usw
set MyDateTime=%DirDateTime:~6,4%-%DirDateTime:~3,2%-%DirDateTime:~0,2%_
REM JJJJ-MM-TT haben wir, noch Zeit dazu...
set MyDateTime=%MyDateTime%%DirDateTime:~10,2%h%DirDateTime:~13,2%
echo rename %~f4 %MyDateTime%%~x4
goto :eof
:hauInsMett
--------snipp RenamemitDatumSkizzeGetestet.bat--------------


1 ) Output bei mir:
(Debug) Datei: RenameMitDatum.bat Cr-Datum/Zeit: 31.08.2005 14:46
rename E:\RenameMitDatum.bat 2005-08-31_14h46.bat

2.) Zeile ECHO (Debug)... kann gelöscht/ ausgeREMt werden nach dem Testen.
Ebenso natürlich NACH dem Testen aus dem "ECHO rename" ein "Rename" oder "Copy" machen.

3) Ein ständiges "Rename" im selben Verzeichnis bringts natürlich nicht, ich würde die Dateien in ein anderes Verzeichnis kopieren und in diesem hier löschen.

4) je nachdem, was bei Euch für länderspezifische Einstellungen aktiv sind, können sich die date/time-Formate verschieben. Also ggf. anpassen bei englischer/amerikanischer oder Oldenburger-Platt-Ländereinstellung.

Hope That Helps & Hoff Das Wars

Biber aka einer der Belastbarsten
Bitte warten ..
Mitglied: hasenfuss
31.08.2005 um 20:39 Uhr
Hallo Biber,

vielen Dank für deine Mühe. Jetzt gehts. Danke.

Viele Grüße

Hasenfuss
Bitte warten ..
Mitglied: Biber
31.08.2005 um 21:05 Uhr
Ok, Hasenfuss,
freut mich. Da das immer noch die Version 0.20 ist... *gg

Noch die Anmerkung: Der Batch läuft NICHT mit Dateinamen, die Leerzeichen beinhalten.
Dazu müssten noch in drei Zeilen ein paar Zeichen rein, aber solange es niemand vermisst.. ich erwähne es nicht *feix*
Sollte ja mehr eine Skizze sein, schöner und bunter machen ist sicherlich möglich.

Grüße zurück

Biber
P.S. Bist Du sicher, dass Du mit dem "Erstellungsdatum" keinen Denkfehler machst? Wenn neuere Versionen einer Datei "kommen", wo auch immer Du die herbekommst, werden die immer über die bereits vorhandenen drübergenagelt. Bzw. im Rename-Fall bekommst Du eine aufs Maul ("Unable to rename-File exists") und im COPY-Fall ist die Vorgängerversion wech.
Mir egal, works as designed , wie die Programmierer immer wissend sagen, aber fragen wollte ich schon mal...
Bitte warten ..
Mitglied: hasenfuss
01.09.2005 um 01:38 Uhr
Hallo Biber,

ich glaub es funktioniert. Die Dateien sind im *.tif Format. Ein Programm, dass Faxe verwaltet speichert die Dateien. Der Name ist ein Zahlenbuchstabengewirr. Leider haben sich bei mir ein paar 1000 Dateien angesammelt und ich kann nicht erkennen, wann welche Datei gespeichert worden ist. Das Programm muss weg, weil es pro Jahr ein Haufen Geld kostet. Aber die alten Dateien brauch ich noch. Ich hoffe mit dem Batch funktiert ist jetzt endlich.

Nochmals vielen Dank. Du hast mir echt geholfen. Ich werd mich mit den Batchen jetzt mehr auseinander setzten. Die sind echt total praktisch.

Viele Grüße

hasenfuss
Bitte warten ..
Mitglied: bANDYt
16.10.2006 um 16:50 Uhr
Noch die Anmerkung: Der Batch läuft
NICHT mit Dateinamen, die
Leerzeichen beinhalten.
Dazu müssten noch in drei Zeilen ein
paar Zeichen rein, aber solange es niemand
vermisst.. ich erwähne es nicht *feix*

Doch ich hier vermisse die "drei Zeilen"

Ich habe mir mal Deine Batch "RenamemitDatumSkizzeGetestet.bat" ausgeliehen und etwas umgebastelt.
Geht auch soweit wie ich mir das verstelle, nur mit den Leerzeichen im Dateinamen komm ich nicht klar

Mit freundlichen Grüßen
Andy

@Echo off & setlocal
for /F "Tokens=1*" %%f in ('dir /A-D /T /-C ^|find "."') do call :loop %%f %%g %%h %%i
goto ende
:loop
echo (Debug) Datei: %4 Dateidatum: %1
set DirDatetime=%1
REM MydateTime im Format JJJJ-MM
set MyDateTime=%DirDateTime:~6,4%-%DirDateTime:~3,2%
REM Dir JJJJ-MM erstellen
if exist %~d4%~p4%MyDateTime% goto :move
echo (Debug) md %~d4%~p4%MyDateTime%
REM Datei dorthin verschieben
:move
echo (Debug) move %~f4 %~d4%~p4%MyDateTime%\%~n4%~x4
goto :eof
:ende
Bitte warten ..
Mitglied: Biber
16.10.2006 um 19:27 Uhr
Moin bANDYt,

o je... Jugendsünden...

Aus heutiger Sicht würde ich einen derartigen Batch etwas anders schreiben und wenigstens zwei (optionale) Parameter vorsehen.
[Parameter1: Dateimaske, z.B. *.doc oder *.tif,
Parameter2: Lw/Verzeichnis, in dem das Ganze laufen soll.

Das würde dann auf Basis Deiner Anpassungen so aussehen können:
01.
::------snipp MoveMitDatumUndLeerzeichen.bat 
02.
@Echo off & setlocal 
03.
pushd %2 
04.
for /F "delims=" %%f in ('dir /b %1') do call :loop "%%f" 
05.
PopD 
06.
goto :eof  
07.
:loop  
08.
echo (Debug) Datei: %1 Dateidatum: %~t1 
09.
REM MydateTime im Format JJJJ-MM 
10.
for /f "tokens=2,3 delims=. " %%i in ("%~t1") do set MyDateTime=%%j-%%i 
11.
REM Dir JJJJ-MM erstellen 
12.
if not exist "%~dp1%MyDateTime%" echo (Debug) md "%~dp1%MyDateTime%" 
13.
REM Datei dorthin verschieben 
14.
echo (Debug) move "%~f1" "%~dp1%MyDateTime%\%~nx1" 
15.
goto :eof 
Gruß
Biber
Bitte warten ..
Mitglied: bANDYt
18.10.2006 um 00:25 Uhr
Danke Biber, http://www.cheesebuerger.de/images/more/schilder/n050.gif !

Parameter1: Dateimaske, z.B. *.doc oder *.tif
funktioniert prächtig!
Parameter2: Lw/Verzeichnis, in dem das Ganze laufen soll.
Läuft irgendwie nicht...(oder ich mach was verkehrt), ist aber auch nicht schlimm, da kann ich gut damit leben.

Hast Du noch eine Idee, wie man es verhindern kann, dass die Batch sich selbst verschieben möchte? Ausser diese als schreibgeschützt und/oder versteckt zu markieren.


===> direkt im Verzeichnis gestartet, alles paletti
I:\Test>MoveMitDatumUndLeerzeichen.bat
(Debug) Datei: "bla bla bla.txt" Dateidatum: 03.03.2003 00:03
(Debug) md "I:\Test\2003-03"
(Debug) move "I:\Test\bla bla bla.txt" "I:\Test\2003-03\bla bla bla.txt"
(Debug) Datei: "bla bla.txt" Dateidatum: 02.02.2002 00:03
(Debug) md "I:\Test\2002-02"
(Debug) move "I:\Test\bla bla.txt" "I:\Test\2002-02\bla bla.txt"
(Debug) Datei: "bla.txt" Dateidatum: 01.01.2001 00:03
(Debug) md "I:\Test\2001-01"
(Debug) move "I:\Test\bla.txt" "I:\Test\2001-01\bla.txt"
(Debug) Datei: "MoveMitDatumUndLeerzeichen.bat" Dateidatum: 16.10.2006 19:33
(Debug) md "I:\Test\2006-10"
(Debug) move "I:\Test\MoveMitDatumUndLeerzeichen.bat" "I:\Test\2006-10\MoveMitDa
tumUndLeerzeichen.bat"

===> aus einem anderen Verzeichnis oder Laufwerk aus gestartet:
H:\>MoveMitDatumUndLeerzeichen.bat i:\test
(Debug) Datei: "bla bla bla.txt" Dateidatum:
(Debug) move "H:\bla bla bla.txt" "H:\\bla bla bla.txt"
(Debug) Datei: "bla bla.txt" Dateidatum:
(Debug) move "H:\bla bla.txt" "H:\\bla bla.txt"
(Debug) Datei: "bla.txt" Dateidatum:
(Debug) move "H:\bla.txt" "H:\\bla.txt"
(Debug) Datei: "MoveMitDatumUndLeerzeichen.bat" Dateidatum: 16.10.2006 19:33
(Debug) md "H:\2006-10"
(Debug) move "H:\MoveMitDatumUndLeerzeichen.bat" "H:\2006-10\MoveMitDatumUndLeer
zeichen.bat"
Bitte warten ..
Mitglied: Biber
18.10.2006 um 10:58 Uhr
Moin bANDYt,

MoveMitDatumUndLeerzeichen.bat i:\test
--> der Parameter "Lw\pfad" funktioniert schon, aber der wird ja als zweiter erwartet.
also wäre richtiger:
MoveMitDatumUndLeerzeichen.bat *.* i:\test
...denn der erste der beiden optionalen Parameter wird als filemask für den DIR-Befehl interpretiert.

Zur zweiten Frage ("Wie kann ich verhindern, dass die ausführenede *.bat-Datei selbst mit verschoben wird..?")
01.
::MoveMitDatumUndLeerzeichen.bat 
02.
@Echo off & setlocal 
03.
pushd %2 
04.
for /F "delims=" %%f in ('dir /b <b>/a-d</b> %1 <b>^2^>nul</b>') do <b>if /i %%~sf NEQ %~s0</b> call :loop "%%f" 
05.
<b>popD & </b>goto :eof  
06.
:loop  
07.
echo (Debug) Datei: %1 Dateidatum: %~t1 
08.
REM MydateTime im Format JJJJ-MM 
09.
for /f "tokens=2,3 delims=. " %%i in ("%~t1") do set MyDateTime=%%j-%%i 
10.
REM Dir JJJJ-MM erstellen 
11.
if not exist "%~dp1%MyDateTime%" echo (Debug) md "%~dp1%MyDateTime%" 
12.
REM Datei dorthin verschieben 
13.
echo (Debug) move "%~f1" "%~dp1%MyDateTime%\%~nx1" 
14.
goto :eof 
[Ergänzungen sind fett hervorgehoben, das "PopD" hatte ich vergessen letztes Mal.]

Anmerkungen:
Die Zeitermittlung geht hier auf das letzte Änderungsdatum der Datei.
Sollte wieder das Erstellungsdatum gewünscht sein, dann ist der weiter oben beschriebene Umweg über die tabellenartige "DIR /Tc .."- Ausgabe nötig.
Der "%%~t"-Parameter nimmt jedenfalls immer das Änderungsdatum AFAIK.

Falls keine passenden Dateien in dem Verzeichnis sein sollten, würde vom DIR-Befehl eine Fehlermeldung erzeugt werden "Datei nicht gefunden".
Die wiederum zu Folgefehlern führen würde, da dieser Text an den :LOOP-Block weitergereicht wird.

Abfangen läst sich dieser Effekt durch Umleitung der Fehlerausgabe ("Dir *.xyz 2>nul").
Da hier wieder ein bisschen was maskiert werden muss, sieht es etwas kryptisch aus oben... ist nicht so wichtig. Einfach hinnehmen.

Gruß
Biber
Bitte warten ..
Mitglied: bANDYt
19.10.2006 um 22:45 Uhr
Servus Biber,

--> der Parameter "Lw\pfad" funktioniert schon, aber der wird ja als zweiter erwartet.
Ah, jetzt ja! Nun hab ich es auch kappiert.

Zeile 7: "echo (Debug) Datei: %1 Dateidatum: %~tc1" macht Ärger: "Die folgende Verwendung des Pfadoperators zur Ersetzung eines Batchparameters ist ungültig: %~tc1"

Das c gestrichen
echo (Debug) Datei: %1 Dateidatum: %~tc1
und alles ist gut.

Aber es funktioniert alles so, wie ich es wollte! Eher noch mehr.

Ich dank' Dir recht sakrisch, Biber.

Gruß
bANDYt
Bitte warten ..
Mitglied: Biber
19.10.2006 um 22:54 Uhr
Gern geschehen, bANDYt,

und das mit dem "~tc1" muss mir hier im Forum beim Formatieren des Kommentars passiert sein...
.. ich habe oben in meinem Kommentar Deine Lösung (Streichen des Buchstaben "c") nachgezogen *gg

So, diesen Beitrag hier setze ich auf "Geschlossen" - hier dürften keine Fragen mehr offen sein.

Schönen Abend
Biber
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Powershell Ordnername auslesen und verwenden (3)

Frage von zamsi7 zum Thema Batch & Shell ...

Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Batch & Shell
gelöst Appx aus Image auslesen und entfernen (9)

Frage von Markus2016 zum Thema Batch & Shell ...

Netzwerke
VPN nur für bestimmte Port(s) verwenden unter Win10 (1)

Frage von Bluebrain zum Thema Netzwerke ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...