115241
Goto Top

Verzeichnisse mit neuen Datum ändern bzw. anpassen

Hallo, hier kurz und knapp mein Problem.

Ich habe mit Hilfe von FileTouch.exe ein Batch Script geschrieben welches Folgendes macht (funktioniert tadellos).
Es liest das Datum in ausgewählten Verzeichnissen, aus einer Datei die sich dort drin befindet und verseht andere Dateien die sich auch in dem Verzeichnis befinden mit dem neuen Datum aus.
Sprich, ich "normalisiere" ausgewählte Dateiendtyp mit dem "definiertem" Datum so, dass alle Dateien das gleiche Datum zum Schluss haben.

Mein Problem ist jetzt, dass ich auch die "Verzeichnisse" mit dem zugehörigen Datum verändern möchte, das gelingt mir leider nicht.

Hier ist mein Script:
@echo off & setlocal & title %~n0
cls

:: Verändert das Datum und die Uhrzeit mittels FileTouch.exe
:: Informationen werden aus der Attribute eines zuvor deklarierten
:: Dateityps gelesen und fuer das neue Dateityp verwendet
:: Downlouad unter http://www.softtreetech.com/24x7/archive/47.htm

:: Pfad von FileTouch.exe
set Touch="c:\tools\FileTouch.exe"  
:: Arbeitsverzeichnis 
set "Verzeichnis=G:\Test"  
:: Dateityp der verarbeitet wird
set "Typ=jpg"  
:: Datum/Zeit wird aus dem Dateityp ausgelesen
set "orgTyp=txt"  

:: -=- Sofern Liste.txt nicht verwendet wird, 
:: -=- muss von hier alles Komentiert sein

:: Aktuelles Verzeichnis, wo diese .bat und Liste.txt liegen
set "Pfad=%~dp0"  
:: Liste mit Verzeichnissen, die verarbeitet werden
set "List=Liste.txt"  

:: Wechselt ins aktuelles Verzeichnis, sonst Ende
pushd %Pfad% || goto :eof
:: Verarbeitet Liste und springt zu ProcessFile
for /f "usebackq delims=" %%i in ("%List%") do set "Verzeichnis=%%i" & call :Process1 "%%i"  
popd
goto :eof

:Process1
echo Verzeichnis aus %List%: %Verzeichnis%

:: -=- Bis hier sofern Liste.txt verwendet wird

:: Wechselt ins Arbeitverzeichnis, sonst Ende
pushd "%Verzeichnis%" || goto :eof  

:: Liest das Datum und die Uhrzeit und fügt der Zeit zusätzliche (:00) bei, 
:: die notwendig sind für das umschreiben von FileTouch
for %%i in ("%Verzeichnis%\*.%orgTyp%") do (  
    for /f "tokens=1-2 delims= " %%j in ("%%~ti") do (set "Datum=%%j" & set "Zeit=%%k:00")  
)
:: Datumsformat aus Punkten (.) wird Bindestrich (-) notwendig für FileTouch
for /f "delims=. tokens=1-3" %%a in ("%Datum%") do (set "Dat=%%b-%%a-%%c")  

:: Verarbeitet Dateien die verändert werden sollen
for /f "delims=" %%i in ('dir /b /a-d /t:c "*.%Typ%"') do @( set "Datei=%%i" & call :Process2 "%%i")  
popd
goto :eof

:Process2
echo.
echo Dateiname: %Datei% Datum: %Dat% Zeit: %Zeit%
echo ----------
:: FileTouch mit Parametern wird aufgerufen
echo %Touch% /W /A /C /D %Dat% /T %Zeit% "%Verzeichnis%"  
echo -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Die Liste sieht so aus:
C:\Test\Verzeichnis_1
C:\Test\Verzeichnis_2
C:\Test\Verzeichnis_3
Batch und Liste.txt befinden sich in C:\Test

Wie kann ich jetzt nur die Verzeichnisse mit dem "ausgelesenen" Datum anpassen??
Danke für die Hilfe

ps: Handarbeit fällt aus, da es sich um mehrere Hundert Verzeichnisse handelt.

Content-Key: 242247

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

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

Member: Gersen
Solution Gersen Jun 30, 2014 updated at 18:57:15 (UTC)
Goto Top
Hallo,

mal DirTouch angeschaut? - Ungetestet.

Gruß,
Gersen
Mitglied: 115241
115241 Jun 30, 2014 at 18:56:55 (UTC)
Goto Top
Hi,
Zitat von @Gersen:
Hallo,
mal DirTouch angeschaut? - Ungetestet.
Gruß,
Gersen
Danke für den Tipp, funktioniert, muss nur noch eine Batch dafür zusammen zimmern face-smile