batch ordner-änderungsdatum ändern - wie touch
ich möchte gerne ordnern den gleichen timestamp (change) verpassen, wie einer im ordner liegenden datei.
leider funktioniert unxutils' touch nur für dateien und nicht für directories, ansonsten wäre
schon ok.
zur ordnerstruktur: die datumsmäßig ausschlaggebende datei liegt jeweils im zu bearbeitenden ordner und hat den gleichen namen wie der enthaltende ordner und die endung .abc.
die einzige idee, die mir noch einigermaßen vielversprechend (wenngleich absurd) vorkommt, wäre, das änderungsdatum der datei zu bestimmen,
(so ungefähr), anschließend mit
das systemdatum zu ändern, eine datei im verzeichnis anzulegen und wieder zu löschen und zum nächsten verzeichnis weiterzugehen.
hat nicht jemand eine bessere idee?
schönen gruß
jutzin
leider funktioniert unxutils' touch nur für dateien und nicht für directories, ansonsten wäre
for /d /r %%i in (*) do if exist "%%i\%%~nxi.abc" touch -r "%%i\%%~nxi.abc" "%%i"
zur ordnerstruktur: die datumsmäßig ausschlaggebende datei liegt jeweils im zu bearbeitenden ordner und hat den gleichen namen wie der enthaltende ordner und die endung .abc.
die einzige idee, die mir noch einigermaßen vielversprechend (wenngleich absurd) vorkommt, wäre, das änderungsdatum der datei zu bestimmen,
for /f "delims=" %%i in ('dir .\*.abc /s /b /a-d') do set file_date=%%~ti
date
hat nicht jemand eine bessere idee?
schönen gruß
jutzin
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 115122
Url: https://administrator.de/contentid/115122
Ausgedruckt am: 25.11.2024 um 20:11 Uhr
24 Kommentare
Neuester Kommentar
Moin jutzin,
Du hast ja keine Ahnung, welchen Aufwand Du mit Deiner Frage ausgelöst hast.
Aber Du hast in der Tat eins der wenigen noch ungelösten Probleme auf den Tisch gebracht, die unter Windows noch existieren. Bzw. existierten (s.u.).
Recherche ergab:
Es gab bis heute morgen 07:42 universumsweit noch kein bekanntes Touch-Utility, das folgende 4 Kriterien erfüllt hätte:
- soll unter Windows laufen
- soll konsolenbasiert/unter der CMD.exe laufen OHNE GUI-Firlefanz
- soll alle drei Datumswerte ändern können (create, modify , last access)
- soll das auch "nur" für Ordner (nicht nur Ordner incl aller Dateien darin) können.
Varianten, die bis zu drei Kriterien erfüllen finde ich. Alle vier-->Fehlanzeige.
Seit heute gibt es ein Utility dafür.
Das Tool ist nicht von mir geschrieben und nicht von einem Forumsmitglied, aber falls Du es damit versuchen willst ...
--> PN oder Mail an mich.
Und natürlich bin ich dankbar für eventuelle Hinweise auf andere CMDLine-Touch-Utilities, die ähnliches können.
Grüße
Biber
Du hast ja keine Ahnung, welchen Aufwand Du mit Deiner Frage ausgelöst hast.
Aber Du hast in der Tat eins der wenigen noch ungelösten Probleme auf den Tisch gebracht, die unter Windows noch existieren. Bzw. existierten (s.u.).
Recherche ergab:
Es gab bis heute morgen 07:42 universumsweit noch kein bekanntes Touch-Utility, das folgende 4 Kriterien erfüllt hätte:
- soll unter Windows laufen
- soll konsolenbasiert/unter der CMD.exe laufen OHNE GUI-Firlefanz
- soll alle drei Datumswerte ändern können (create, modify , last access)
- soll das auch "nur" für Ordner (nicht nur Ordner incl aller Dateien darin) können.
Varianten, die bis zu drei Kriterien erfüllen finde ich. Alle vier-->Fehlanzeige.
Seit heute gibt es ein Utility dafür.
Touch Version 3.090506.8, Copyright (c) 1994-2009 RNS Berlin
Aufruf: TOUCH Pfadname tt{.}mm{.}{jj}jj] [ss{:}mm{:}{ss}]
[Parameter, mit Leerzeichen getrennt]
Parameter sind:
/S Unterverzeichnisse durchsuchen (default nein)
/D Unterverzeichnisse touchen (default nein)
/L Lokale Zeit verwenden (default)
/U UTC verwenden (real vom System verwendet)
/C Erstellungszeit setzen
/W Aenderungszeit setzen (default)
/A Letzte Zugriffszeit setzen
/V Verbose, erweiterte Meldungen anzeigen
/I Nur reale Daten anzeigen, nichts setzen
/? Diesen Bildschirm anzeigen
/LOG Alle Ausgaben an %TEMP%\TOUCHLOG.TXT anfuegen
Fehlen Zeitangaben, wird die aktuelle Systemzeit (UTC) zum Setzen der Zeit(en) verwendet.
Das Tool ist nicht von mir geschrieben und nicht von einem Forumsmitglied, aber falls Du es damit versuchen willst ...
--> PN oder Mail an mich.
Und natürlich bin ich dankbar für eventuelle Hinweise auf andere CMDLine-Touch-Utilities, die ähnliches können.
Grüße
Biber
Ich war der Übeltäter aus der pm ;)
Vielen Dank für deine sehr ausführliche Antwort.
Habe im Oberordner der zu Touchenden Unterordner nun die 3 Dateien drin.
touch.exe, touchit.bat, touchwithnewest.bat
beim ausführen der touchwithnewest.bat wird auch etwas abgearbeitet, jedoch scheint die touch.exe nicht mit den übergebenen parametern zurecht zu kommen.
Z:\>touchwithnewest.bat
Der Befehl "touch" ist entweder falsch geschrieben oder konnte nicht gefunden werden.
greatz
Vielen Dank für deine sehr ausführliche Antwort.
Habe im Oberordner der zu Touchenden Unterordner nun die 3 Dateien drin.
touch.exe, touchit.bat, touchwithnewest.bat
beim ausführen der touchwithnewest.bat wird auch etwas abgearbeitet, jedoch scheint die touch.exe nicht mit den übergebenen parametern zurecht zu kommen.
Z:\>touchwithnewest.bat
Der Befehl "touch" ist entweder falsch geschrieben oder konnte nicht gefunden werden.
greatz
Moin jutzin und #KingDingeling,
in der Tat - die Touch.exe, die ihr beide vorliegen habt, hat wirklich noch ein, zwei übersehene Bugs.
Deshalb konntet ihr auch nicht zu dem erwarteten Ergebnis kommen.
Momentan sind wir aber schon wieder zwei Versionen weiter.
Sozusagen von Version Touch-final.exe über Version Touch-finalst.exe jetzt bei Touch-Ultra-final.exe
Bitte lasst uns noch einen Tag Zeit - wir testen gerade.
Und -ehrlicherweise- wir testen erst, wenn wir die Einkäufe für das lange Wochenende erledigt haben.
Grüße
Biber
in der Tat - die Touch.exe, die ihr beide vorliegen habt, hat wirklich noch ein, zwei übersehene Bugs.
Deshalb konntet ihr auch nicht zu dem erwarteten Ergebnis kommen.
Momentan sind wir aber schon wieder zwei Versionen weiter.
Sozusagen von Version Touch-final.exe über Version Touch-finalst.exe jetzt bei Touch-Ultra-final.exe
Bitte lasst uns noch einen Tag Zeit - wir testen gerade.
Und -ehrlicherweise- wir testen erst, wenn wir die Einkäufe für das lange Wochenende erledigt haben.
Grüße
Biber
Also erstmal vielen Dank an alle beteiligten.
Es funktioniert ja nun schon ganz gut.
Es werden alle Verzeichnisse durchsucht nur leider nicht 100% richtig getouched. Teilweise erhalten die Ordner das Änderungsdatum 01.01.1980
Und es werden wenn die touch.exe aus einem Unterverzeichnis gestartet wird auch die darüber liegenden Verzeichnisse getouched.
Also z.B. Z:\Bilder\Unterordner touch.exe in dem Ordner liegend gestartet mit touch *.* /Z /S /R werden alle Ordner die in Z: liegen getouched
Da mein Server keine einzelnen Laufwerke hat sondern nur gemountete Verzeichnisse die wie beim Windows Home Server auf alle Platten verteilt liegen, wurden alle Verzeichnisse die sich auf den 3 TB befinden getouched.
Zu 80% richtig aber bei einigen hundert Verzeichnissen ist das Datum nun auf 01.01.1980.
Aber ich bin mir sicher ihr bringt noch ein ServicePack raus ;)
greatz
Es funktioniert ja nun schon ganz gut.
Es werden alle Verzeichnisse durchsucht nur leider nicht 100% richtig getouched. Teilweise erhalten die Ordner das Änderungsdatum 01.01.1980
Und es werden wenn die touch.exe aus einem Unterverzeichnis gestartet wird auch die darüber liegenden Verzeichnisse getouched.
Also z.B. Z:\Bilder\Unterordner touch.exe in dem Ordner liegend gestartet mit touch *.* /Z /S /R werden alle Ordner die in Z: liegen getouched
Da mein Server keine einzelnen Laufwerke hat sondern nur gemountete Verzeichnisse die wie beim Windows Home Server auf alle Platten verteilt liegen, wurden alle Verzeichnisse die sich auf den 3 TB befinden getouched.
Zu 80% richtig aber bei einigen hundert Verzeichnissen ist das Datum nun auf 01.01.1980.
Aber ich bin mir sicher ihr bringt noch ein ServicePack raus ;)
greatz
Also nochmal vielen Dank an euch für die Unterstützung.
Die Ordner die nun das Änderungsdatum 1980 hatten habe ich mit diesem Tool:
http://www.pcwelt.de/downloads/tools_utilities/sonstiges/21661/date_tim ...
nun von Hand per Explorer Kontext Menü geändert.
Waren jetzt 3 Std Arbeit aber nun passen alle Datumsangaben wieder
greatz
Die Ordner die nun das Änderungsdatum 1980 hatten habe ich mit diesem Tool:
http://www.pcwelt.de/downloads/tools_utilities/sonstiges/21661/date_tim ...
nun von Hand per Explorer Kontext Menü geändert.
Waren jetzt 3 Std Arbeit aber nun passen alle Datumsangaben wieder
greatz
hey, sorry das ich so "reinplatze"
aber ist es möglich mit diesem touch auch den ordner und alle dateien und allen unterordner ein dynamisches datum zu vergeben ?
zb bei jeder datei immer eine minute hochzuzählen
am ende soll es so aussehen ->
OrdnerA---------[Datum 01.01.2000 01:01]
->DateiA.1------[Datum 01.01.2000 01:02]
->DateiA.2------[Datum 01.01.2000 01:03]
OrdnerB---------[Datum 01.01.2000 01:04]
->DateiB.1------[Datum 01.01.2000 01:05]
->DateiB.2------[Datum 01.01.2000 01:06]
Datei1.1 ist im Ordner1 usw.
mfg serJO
aber ist es möglich mit diesem touch auch den ordner und alle dateien und allen unterordner ein dynamisches datum zu vergeben ?
zb bei jeder datei immer eine minute hochzuzählen
am ende soll es so aussehen ->
OrdnerA---------[Datum 01.01.2000 01:01]
->DateiA.1------[Datum 01.01.2000 01:02]
->DateiA.2------[Datum 01.01.2000 01:03]
OrdnerB---------[Datum 01.01.2000 01:04]
->DateiB.1------[Datum 01.01.2000 01:05]
->DateiB.2------[Datum 01.01.2000 01:06]
Datei1.1 ist im Ordner1 usw.
mfg serJO
wow, megahammergeil!
kurze frage nun zu diesem touch, wie genau wende ich sie an ?
hab nun eine bat datei erzeugt und die touch.exe in meinen ordner gelegt
eigentlich geht es um mp3s, diese sind bei mir alphabetisch in ordnern abgelegt,
das problem ist aber das meine stereoanlage die mp3s auf meiner usb festplatte nach DATUM sortiert.. im ordner und auserhalb, heisst wenn man nen neuen ordner erstellt mit zb namen AAAAA wird er trotzdem ganz unten erscheinen weil er ja "neu" ist, also neues zum schluss, total doof wie ich finde, und deshalb dachte ich das ich dieses touch einfach über die dateien laufen lasse und dann die dateien in der richtigen reihenfolge sind
mfg gleich mal probieren
so ausprobiert, irgendwie steht bei mir immer die selbe zeile mehrmals hintereinander ->
was genau ich gemacht habe:
- bat. datei im zu bearbeitenden ordner erstellt, mit dem code von oben
- touch.exe in den selben ordner in der die bat datei ist, kopiert
- bat datei laufen lassen
PS: noch ne frage, warum schließt sich das fenster der bat datei gleich nachdem sie durchlaufen ist, kann man das ändern ?
kurze frage nun zu diesem touch, wie genau wende ich sie an ?
hab nun eine bat datei erzeugt und die touch.exe in meinen ordner gelegt
eigentlich geht es um mp3s, diese sind bei mir alphabetisch in ordnern abgelegt,
das problem ist aber das meine stereoanlage die mp3s auf meiner usb festplatte nach DATUM sortiert.. im ordner und auserhalb, heisst wenn man nen neuen ordner erstellt mit zb namen AAAAA wird er trotzdem ganz unten erscheinen weil er ja "neu" ist, also neues zum schluss, total doof wie ich finde, und deshalb dachte ich das ich dieses touch einfach über die dateien laufen lasse und dann die dateien in der richtigen reihenfolge sind
mfg gleich mal probieren
so ausprobiert, irgendwie steht bei mir immer die selbe zeile mehrmals hintereinander ->
Usage: touch.exe <path to file>
Sets the modification date/time of <file> to the current date/t
This is a simple version of the Unix touch program for Win32.
Written by Helge Klein, 2002, http://www.helge.mynetcologne.de
Sets the modification date/time of <file> to the current date/t
This is a simple version of the Unix touch program for Win32.
Written by Helge Klein, 2002, http://www.helge.mynetcologne.de
was genau ich gemacht habe:
- bat. datei im zu bearbeitenden ordner erstellt, mit dem code von oben
- touch.exe in den selben ordner in der die bat datei ist, kopiert
- bat datei laufen lassen
PS: noch ne frage, warum schließt sich das fenster der bat datei gleich nachdem sie durchlaufen ist, kann man das ändern ?
Hmm.. so habs nun ausprobiert ->
mit der version von Biber
also nun liefert mir die touch folgendes:
Fehlerhaftes Datum: 01.01.2000
Touch Version 3.090526.1, Copyright (c) 1994-2009 RNS Berlin
Fehlerhaftes Datum: 01.01.2000
Touch Version 3.090526.1, Copyright (c) 1994-2009 RNS Berlin
...
Touch Version 3.090526.1, Copyright (c) 1994-2009 RNS Berlin
Fehlerhaftes Datum: 01.01.2000
Touch Version 3.090526.1, Copyright (c) 1994-2009 RNS Berlin
...
sowas immer abwechselnd
mfg
Ist eigentlich ne SUPER lösung, so würde es dann richtig sortieren
aber es will irgendwie nicht so recht klappen:
1. Nachdem ich die Zeile die du gesagt hast geändert habe->
touch -t MMDD!strstunde:~-2!!strminute!CCYY!strsekunde! "%%i"
bekomme ich ->
touch: invalid date format `MMDD0000CCYY01'
touch: invalid date format `MMDD0000CCYY02'
touch: invalid date format `MMDD0000CCYY03'
touch: invalid date format `MMDD0000CCYY04'
usw.
touch: invalid date format `MMDD0000CCYY02'
touch: invalid date format `MMDD0000CCYY03'
touch: invalid date format `MMDD0000CCYY04'
usw.
2. Die touchsubdirs.bat schreibt mir ->
Eingegebenes Datum kann nicht übernommen werden.
Geben Sie das neue Datum ein: (TT-MM-JJ)
Geben Sie das neue Datum ein: (TT-MM-JJ)
dann gebe ich ein Datum ein zb 01-01-00
dann kommt sofort (habe pause noch am ende eingefügt) ->
Drücken Sie eine beliebige Taste . . .
mfg
ok dickes sorry, naiv zu denken ich meld mich hier an und habe sofort die lösung meines problems, aber ein megafettesdickes DANKE an dich für die mühe und für die Programme, du bist ein Guter Mensch :D
dann versuch ich mal mein glück ;)
MFG SerJOga, und danke nochmals
Sooo, hab da mal was gefunden ->
nun wundere ich mich über den punkt VOR der Sekunde, kann es vll an ihm liegen ?
mfg serjo
Ist halt ein komisches Format:
MonatMonatstagStundeMinutenJahrvierstellig.Sekunden
touch -t 121011042001.20 test.txt
Ausgabe->
10.12.2001 11:04:20
oder anders ->
Montag, 10. Dezember 2001, 11:04:20
MonatMonatstagStundeMinutenJahrvierstellig.Sekunden
touch -t 121011042001.20 test.txt
Ausgabe->
10.12.2001 11:04:20
oder anders ->
Montag, 10. Dezember 2001, 11:04:20
nun wundere ich mich über den punkt VOR der Sekunde, kann es vll an ihm liegen ?
mfg serjo
Soo zum zweiten ^^
hab nun einfach mal testeshalber nen punkt nach dem Jahr eingefügt,
und siehe da es hat sogar funktioniert, aber sobald es zu den 10 sekunden kommt
bringt er wieder nen fehler->
wie könnte man das lösen, und was genau ist mit "permission denied" gemeint ?
wäre es vll geschickter schon mit 10 anzufangen ? was genau müsste ich dazu ändern?
mfg
hab nun einfach mal testeshalber nen punkt nach dem Jahr eingefügt,
und siehe da es hat sogar funktioniert, aber sobald es zu den 10 sekunden kommt
bringt er wieder nen fehler->
touch: F:\AAA_TEST\A: Permission denied
touch: F:\AAA_TEST\B: Permission denied
touch: F:\AAA_TEST\C: Permission denied
touch: F:\AAA_TEST\Neuer Ordner: Permission denied
touch: F:\AAA_TEST\touch.exe: Permission denied
touch: invalid date format `010100002001.010'
touch: invalid date format `010100002001.011'
touch: invalid date format `010100002001.012'
touch: F:\AAA_TEST\B: Permission denied
touch: F:\AAA_TEST\C: Permission denied
touch: F:\AAA_TEST\Neuer Ordner: Permission denied
touch: F:\AAA_TEST\touch.exe: Permission denied
touch: invalid date format `010100002001.010'
touch: invalid date format `010100002001.011'
touch: invalid date format `010100002001.012'
wie könnte man das lösen, und was genau ist mit "permission denied" gemeint ?
wäre es vll geschickter schon mit 10 anzufangen ? was genau müsste ich dazu ändern?
mfg
hi, also vielen dank nochmal, ja du hast recht sonderzeichen sind vorhanden, habe es aber noch nicht ausprobiert ob es zu fehlern kommt (teste mit vielen textdateien nummeriert)
soo du hast ja noch die "ordner_zeit_aenderungsprogramme" geschrieben , hab sie völlig vergessen, gehe gleich mal testen
mfg
PS: achsoo noch ne frage: benutzt du irgendein programm zur pogrammierung ? oder alles mit dem texteditor ? habe "Proton" gefunden, macht die befehle farbig zur besseren übersicht
PS2: also irgendwie funken die "ordner_zeit_aenderungsprogramme" nicht, sonst wäre alles gelöst, er übernimmt irgendwie nicht die uhrzeit von der ältesten datei
wer möchte hier gehts weiter mit der lösung des problems von mir->
MP3 - Erstellungsdatum PLUS 1
soo du hast ja noch die "ordner_zeit_aenderungsprogramme" geschrieben , hab sie völlig vergessen, gehe gleich mal testen
mfg
PS: achsoo noch ne frage: benutzt du irgendein programm zur pogrammierung ? oder alles mit dem texteditor ? habe "Proton" gefunden, macht die befehle farbig zur besseren übersicht
PS2: also irgendwie funken die "ordner_zeit_aenderungsprogramme" nicht, sonst wäre alles gelöst, er übernimmt irgendwie nicht die uhrzeit von der ältesten datei
wer möchte hier gehts weiter mit der lösung des problems von mir->
MP3 - Erstellungsdatum PLUS 1