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

batch ordner-änderungsdatum ändern - wie touch

Frage Entwicklung Batch & Shell

Mitglied: jutzin

jutzin (Level 1) - Jetzt verbinden

02.05.2009, aktualisiert 18.10.2012, 16342 Aufrufe, 24 Kommentare, 1 Danke

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
01.
for /d /r %%i in (*) do if exist "%%i\%%~nxi.abc" touch -r "%%i\%%~nxi.abc" "%%i"
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,
01.
 for /f "delims=" %%i in ('dir .\*.abc /s /b /a-d') do set file_date=%%~ti 
(so ungefähr), anschließend mit
01.
date
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
Mitglied: Biber
07.05.2009 um 15:44 Uhr
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.

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
Bitte warten ..
Mitglied: jutzin
07.05.2009 um 16:07 Uhr
super, muss ich doch nicht von hinten durch die brust ins auge. vielen dank u. s. pm.
Bitte warten ..
Mitglied: jutzin
29.05.2009 um 21:45 Uhr
copypasta aus pm:

Hi,
habe von biber auch die touch.exe bekommen.
Krieg es aber nicht gebacken.
Bei mir ist folgendes passiert.
Ich habe einen Windows Home Server und ein Streaming Server war der Meinung
alle Mediadaten zu indexieren und in jeden Ordner ein Vorschau jpg abzulegen.
Nun passt bei keinem meiner MP3, Bilder oder Video Ordner das
Änderungsdatum.
Die jpg wurden gelöscht, aber ich würde nun gerne jedem Unterordner
das Änderungsdatum der neuesten enthaltenen Datei geben.
Von Hand ein riesen Aufwand

Hast du einen Tip für mich? Bzw. den Syntax wie ich die touch.exe
einsetzen kann?

THX for help!

hi,

Dein problem ist dann wohl ganz ähnlich wie meins. leider scheint das touch-tool nicht richtig zu funktionieren (es gibt z.b. ein problem mit leerzeichen im ordnernamen), ich schreibe den autor demnächst nochmal an, das wird aber noch ein zwei tage dauern.

so würde es wohl gehen, wenn das touch-tool funktionieren würde:
01.
for /f " usebackq delims==" %%i in (`dir /b /s /o:-d *deine*referenzdatei*oder*ausdruck*mit*wildcards*`) do set timestamp=%%~ti && touch "%%~pi" "%%timestamp:~0,10"
allerdings würde dann für jede datei in jedem ordner einmal touch ausgeführt; dass der ordner am ende den zeitstempel der jüngsten datei trägt, wird durch den parameter /o:-d vom dir-befehl erreicht, der bewirkt, dass die auflistung nach absteigendem dateialter geschieht. wenn Dir das zu lange dauert oder Dir prinzipiell gegen den strich geht (könnte ich auf jeden fall verstehen :D), dann müsste das ganze wohl (ungetestet!!) so aussehen:

touchwithnewest.bat, diese datei muss im obersten knoten des unterbaumes, der "durchgetoucht" werden soll, ausgeführt werden.
01.
::touchwithnewest.bat 
02.
@echo off && setlocal enabledelayedexpansion 
03.
for /d /r %%i in (*) do call %%~d0%%~p0\touchit.bat "%%i"
touchit.bat, diese datei muss im gleichen verzeichnis wie touchwithnewest.bat liegen und wird als subroutine aus touchwitnewest .bat aufgerufen.
01.
::touchit.bat 
02.
cd %1 
03.
for /f "usebackq delims==" %%j in (`dir /b /od`) do set pfad=%%~pj && set timestamp=%%~tj 
04.
set timestamp=%timestamp:~0,10% 
05.
touch "%pfad%" "%timestamp%"
wenn Du's uhrzeitgenau haben willst, musst Du die zeile 3 in touchit.bat entsprechend der vorgaben von touch.exe ändern.

wenn das mit dem tool nix wird, werde ich demnächst einfach ein batch schreiben, das das gleiche erreicht, indem das rechnerdatum auf das datum der jüngsten datei im verzeichnis gesetzt wird und dort ein file anlegt und wieder löscht (und somit das änderungsdatum des verzeichnisses auf das der erstellten und wieder gelöschten datei setzt). eigentlich steht's ja schon fast da oben...

viele grüße
jutzin
Bitte warten ..
Mitglied: 78807
30.05.2009 um 10:19 Uhr
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
Bitte warten ..
Mitglied: Biber
30.05.2009 um 12:27 Uhr
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
Bitte warten ..
Mitglied: jutzin
30.05.2009 um 12:36 Uhr
@Biber und RSN: kein stress, bei mir steht das auch nicht gerade ganz oben auf der liste.
@#KingDingeling: klar, die touch musst Du entweder auch in den "oberordner" legen oder mit komplettem pfad ansprechen (also nicht
01.
touch pfad zeit
,
sondern
01.
laufwerk:/pfad/zur/touch/touch.exe pfad zeit
)

jutzin
Bitte warten ..
Mitglied: 78807
30.05.2009 um 13:07 Uhr
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
Bitte warten ..
Mitglied: 78807
01.06.2009 um 13:22 Uhr
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
Bitte warten ..
Mitglied: serJOga
12.07.2009 um 14:43 Uhr
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.

Mit freundlichen Grüßen serJO
Bitte warten ..
Mitglied: jutzin
12.07.2009 um 15:55 Uhr
so müsste es gehen:

01.
@echo off && setlocal enabledelayedexpansion 
02.
 
03.
set datum=%1 
04.
if ()==(%1) set datum=01.01.2000 
05.
 
06.
set /a sekunde=0 
07.
set /a minute=0 
08.
set /a stunde=0 
09.
 
10.
for /f "usebackq delims==" %%i in (`dir /s /b *`) do set /a sekunde=!sekunde!+1 && set strsekunde=0!sekunde!&& set strminute=0!minute!&& set strstunde=0!stunde!&& echo touch "%%i" %datum% !strstunde:~-2!:!strminute:~-2!:!strsekunde:~-2! && if !sekunde! EQU 59 (set /a sekunde=-1 && set /a minute=!minute!+1 && if !minute! EQU 60 (set /a sekunde=-1 && set /a minute=0 && set /a stunde=!stunde!+1))
benutzung: name_des_batchfiles {tag, formatiert wie für touch}

der code gibt Dir zur sicherheit erstmal nur die touch-befehle aus, die ausgeführt würden, wenn der code "scharf" wäre. zum scharfmachen musst Du das echo vor dem touch in zeile 10 entfernen; ich hab's nämlich nicht mit dem touch-tool überprüft.

der code funktioniert allerdings so nur mit stunden, minuten u sekunden, d.h. es wird nach 24*60*60=86400 dateien/ordnern nicht mehr funktionieren, da dann der stundenzähler auf 24 springt und touch dann vermutlich einen fehler ausgibt. wenn Du mehr als 86400 dateien/ordner hast, musst Du noch einen zähler einbauen, der, sobald der stundenzähler auf 24 springt, das datum inkrementiert und die anderen zähler auf 0 setzt (bzw. den sekundenzähler auf -1).

gruß
jutzin
Bitte warten ..
Mitglied: serJOga
12.07.2009 um 23:53 Uhr
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

Mit freundlichen Grüßen 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


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 ?
Bitte warten ..
Mitglied: jutzin
13.07.2009 um 01:00 Uhr
hi serjoga,

1. eigentlich hast Du alles richtig gemacht.

2. das fenster geöffnet halten kannst Du, indem Du entweder die batch aus der shell aufrufst oder eine zeile mit dem inhalt pause unten in der batch einfügst.

3. dass die syntax für das touch-werkzeug falsch ist, dürfte wohl daran liegen, dass Du offensichtl eine andere touch.exe hast, als die, um die es in diesem thread geht. die "richtige" touch.exe bekommst Du, indem Du biber per pm fragst (nehm ich jdf mal an).

gruß
jutzin
Bitte warten ..
Mitglied: serJOga
13.07.2009 um 15:26 Uhr
Zitat von jutzin:
gruß
jutzin



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
...

sowas immer abwechselnd

Mit freundlichen Grüßen
Bitte warten ..
Mitglied: jutzin
14.07.2009 um 21:49 Uhr
hm, also dann weiß ich auch nicht weiter, da scheint die touch.exe noch ein sog. undokumentiertes feature zu haben.

anderer vorschlag: besorg Dir die UnxUtils , da ist auch 'n touch-tool dabei. dieses tool erwartet etwas andere parameter...
01.
Usage: touch [OPTION]... FILE... 
02.
Update the access and modification times of each FILE to the current time. 
03.
 
04.
  -a                     change only the access time 
05.
  -c                     do not create any files 
06.
  -d, --date=STRING      parse STRING and use it instead of current time 
07.
  -f                     (ignored) 
08.
  -m                     change only the modification time 
09.
  -r, --reference=FILE   use this file's times instead of current time 
10.
  -t STAMP               use MMDDhhmm[[CC]YY][.ss] instead of current time 
11.
      --time=WORD        access -a, atime -a, mtime -m, modify -m, use -a 
12.
      --help             display this help and exit 
13.
      --version          output version information and exit 
14.
 
15.
STAMP may be used without -t if none of -drt, nor --, are used.
... also muss der code der batch etwas geändert werden (touch -t MMDD!strstunde:~-2!!strminute!CCYY.!strsekunde:~-2! "%%i" statt touch "%%i" %datum% !strstunde:~-2!:!strminute:~-2!:!strsekunde:~-2!). leider kann dieses touch-tool keine ordner touchen, daher musst Du's für die ordner anschließend nochmal extra machen, z.b. so:
01.
::touchsubdirs.bat 
02.
@echo off && setlocal enabledelayedexpansion 
03.
for /f "usebackq delims=" %%i in (`date /t`) do set datum=%%i&& set datum=!datum:~0,10! 
04.
::echo aktuelles Systemdatum: !datum! 
05.
 
06.
 
07.
 
08.
for /d /r %%i in (*) do call %%~d0%%~p0\_touchwitholdest.bat "%%i" 
09.
 
10.
date %datum% 
11.
echo. 
12.
for /f "usebackq delims=" %%i in (`date /t`) do set datum=%%i&& set datum=!datum:~0,10! 
13.
::echo aktuelles Systemdatum: !datum!
01.
::_touchwitholdest.bat 
02.
@echo off && setlocal enabledelayedexpansion 
03.
 
04.
cd %1 
05.
 
06.
for /f "usebackq delims==" %%j in (`dir /b /o:-d`) do set pfad=%%~pj&& set timestamp=%%~tj 
07.
set timestamp=%timestamp:~0,10% 
08.
date %timestamp% 
09.
::echo Setze Änderungsdatum von "%cd%" auf %timestamp%. 
10.
echo blablubli>tmp.txt 
11.
del tmp.txt
das bewirkt, dass die ordner und alle unterordner anschl als änderungsdatum das änderungsdatum des ältesten im jeweiligen unterordner befindlichen files haben. ist keine schöne lösung, aber immerhin.

gruß
jutzin
Bitte warten ..
Mitglied: serJOga
14.07.2009 um 23:55 Uhr
Zitat von jutzin:
anderer vorschlag
ist keine schöne lösung, aber immerhin

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.



2. Die touchsubdirs.bat schreibt mir ->
Eingegebenes Datum kann nicht übernommen werden.
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 . . .

Mit freundlichen Grüßen
Bitte warten ..
Mitglied: jutzin
15.07.2009 um 01:00 Uhr
äähhh... Du musst natürlich MM durch den monat, DD durch den tag und CCYY durch das jahr ersetzen, das Du den datein u ordnern verpassen willst. am besten, Du befasst Dich ein kleines bisschen mit der touch --help ausgabe und den batches, bevor Du's benutzt. das datum, dass Du am ende eingeben sollst, ist übrg das "echte" datum, auf das Du den computer wieder zurückstellen sollst, also heute z.b. der 15.07.2009.
Bitte warten ..
Mitglied: serJOga
15.07.2009 um 18:48 Uhr
Zitat von jutzin:
äähhh... am besten, Du befasst Dich ein kleines
bisschen mit der touch

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 ;)

Mit freundlichen Grüßen SerJOga, und danke nochmals
Bitte warten ..
Mitglied: serJOga
15.07.2009 um 22:29 Uhr
Sooo, hab da mal was gefunden ->

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


nun wundere ich mich über den punkt VOR der Sekunde, kann es vll an ihm liegen ?

Mit freundlichen Grüßen serjo
Bitte warten ..
Mitglied: serJOga
15.07.2009 um 23:29 Uhr
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->

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'

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?

Mit freundlichen Grüßen
Bitte warten ..
Mitglied: jutzin
15.07.2009 um 23:46 Uhr
1. permission denied, weil das touch wie gesagt keine ordner touchen kann. sich selbst kann es natürlich auch nicht touchen.
2. die dreistellige sekundenzahl kommt, weil die stelle touch -t MMDD!strstunde:~-2!!strminute!CCYY.!strsekunde! falsch ist (sorry, mein fehler, hab's oben schon geändert). es muss natürlich heißen touch -t MMDD!strstunde:~-2!!strminute!CCYY.!strsekunde:~-2!.
Bitte warten ..
Mitglied: serJOga
17.07.2009 um 18:12 Uhr
hm... ich weiß nicht aber hast du den code bei dir auch getestet ? bei zb über 200 dateien
bei mir geht nämlich nichts
Bitte warten ..
Mitglied: jutzin
17.07.2009 um 19:07 Uhr
möglicherweise verschluckt sich das touch, wenn es mit ordnern konfrontiert wird. andererseits sollte es anschließend trotzdem normal weitergehen... wie auch immer, ich habe die ordner mal rausgenommen aus der schleife. ich habe den folgenden code mit 47232 dateien getestet. meine erster erzeugter touch-befehl sah so aus: touch -t 010100002000.01 "E:\file1.dat" und mein letzter so: touch -t 010113072000.12 "E:\file47232.dat". ich habe das nicht in der scharfen version getestet, aber m.e. entsprechen diese befehle der touch-parameter-syntax. evtl. liegt der fehler bei Dir bei dateinamen mit sonderzeichen? chcp 1252 könnte vielleicht abhilfe schaffen. der einfachheit halber hier nochmal der komplette code für die batch:
01.
@echo off && setlocal enabledelayedexpansion 
02.
 
03.
chcp 1252 
04.
 
05.
set datum=%1 
06.
if ()==(%1) set datum=01.01.2000 
07.
set DD=%datum:~0,2% 
08.
set MM=%datum:~3,2% 
09.
set CCYY=%datum:~6,4% 
10.
 
11.
set /a sekunde=0 
12.
set /a minute=0 
13.
set /a stunde=0 
14.
 
15.
:: befehl für die touch-version von biber 
16.
::for /f "usebackq delims==" %%i in (`dir /s /b *`) do set /a sekunde=!sekunde!+1 && set strsekunde=0!sekunde!&& set strminute=0!minute!&& set strstunde=0!stunde!&& echo touch "%%i" %datum% !strstunde:~-2!:!strminute:~-2!:!strsekunde:~-2! && if !sekunde! EQU 59 (set /a sekunde=-1 && set /a minute=!minute!+1 && if !minute! EQU 60 (set /a sekunde=-1 && set /a minute=0 && set /a stunde=!stunde!+1)) 
17.
 
18.
:: befehl für die touch-version von unxtools 
19.
for /f "usebackq delims==" %%i in (`dir /s /b /a:-d *`) do set /a sekunde=!sekunde!+1 && set strsekunde=0!sekunde!&& set strminute=0!minute!&& set strstunde=0!stunde!&& echo touch -t %MM%%DD%!strstunde:~-2!!strminute!%CCYY%.!strsekunde:~-2! "%%i" && if !sekunde! EQU 59 (set /a sekunde=-1 && set /a minute=!minute!+1 && if !minute! EQU 60 (set /a sekunde=-1 && set /a minute=0 && set /a stunde=!stunde!+1))
Bitte warten ..
Mitglied: serJOga
17.07.2009, aktualisiert 18.10.2012
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

Mit freundlichen Grüßen

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->
http://www.administrator.de/forum/mp3-erstellungsdatum-plus-1-120047.ht ...
Bitte warten ..
Mitglied: serJOga
18.07.2009 um 15:53 Uhr
kann man auch eigentlich beiträge löschen ?
Mit freundlichen Grüßen
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

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

Ähnliche Inhalte
Batch & Shell
gelöst Batch Ordner erstellen und verschieben (6)

Frage von Fromeonly zum Thema Batch & Shell ...

Batch & Shell
gelöst Per Batch Dateien in einen Ordner - ext. Festplatte übertragen (2)

Frage von tocksick zum Thema Batch & Shell ...

Batch & Shell
gelöst Per FTP-Shell oder Batch in ein unbekanten Ordner wechseln (8)

Frage von Ducky2 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (24)

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

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Erkennung und -Abwehr
Spam mit eigener Domain (12)

Frage von NoobOne zum Thema Erkennung und -Abwehr ...