2.4k Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von
Hallo,

ich möchte per batch alle ps-Dateien in pdf-Dateien umwandeln. Für das aktuelle Verzeichnis klappt das auch, aber es soll auch für alle Unterverzeichnisse durchgeführt werden. Hier mein bisheriger Code:

@echo off

for %%1 in (*.ps) do (
echo %CD%\%%1
acrodist /n/q %CD%\%%1
del %CD%\%%1
)

echo.
pause

4 Antworten

0 Punkte
Beantwortet von theblackbird_ Mitglied (605 Punkte)
Moin,

Das wuerde bei mir dann ungefaehr aussehen wie folgt:
@ECHO off
SET Verz=%CD%
:Verzeichnis
REM Verzeichnisse durchlaufen
FOR /f "tokens=*" %%i in ('dir /A:d /B "%Verz%"') DO (
SET Verz=%Verz%\%%i
CALL :Datei
CALL :Verzeichnis
)
GOTO :EOF


:Datei
FOR %%j in ("%Verz%\*txt") do (
REM mach was mit den Dateien
REM XCOPY nur als Test und Beispiel
ECHO d|XCOPY "%%j" "%%j.$$$"
REM acrodist /n/q "%%j"
REM DEL "%%j"
)
GOTO :EOF


Im vorliegenden Code werden alle TXT-Dateien mittels XCOPY zu $$$-Dateien und die TXTs anschliessen geloescht. (Ich brauchte halt was kleines zum Testen. ) Dies sollte so in allen Verzeichnissen "unterhalb" der Ebene passieren, auf der die Batchdatei laeuft. Es sei denn man gibt in der ersten Zeile anstatt %CD% explizit eine andere "oberste" Ebene vor.

Cu
TheBlackBird ®
0 Punkte
Beantwortet von theblackbird_ Mitglied (605 Punkte)
Moin,

Nachtrag: Ich habe im letzten Moment das Loeschen der Dateien doch noch ausgeblendet (und den Text nicht mehr angepasst) damit sich nicht jemand alle TXTs beim unbedarften Test des Codes loescht. ;-)


Cu
TheBlackBird ®
0 Punkte
Beantwortet von
Cool, super :) Funkioniert zwar erst ab den Unterverzeichnissen und nicht mehr im aktuellen Verzeichnis, aber dann starte ich die Batchdatei halt ne Ebene höher.

Thx
0 Punkte
Beantwortet von theblackbird_ Mitglied (605 Punkte)
Moin,

Muss nicht sein. Ruf doch den Dateiendurchlauf einmalig vor den Verzeichnissen auf. Sieht dann aus wie folgt:

@ECHO off
SET Verz=%CD%
CALL :Datei

:Verzeichnis
REM Verzeichnisse durchlaufen
FOR /f "tokens=*" %%i in ('dir /A:d /B "%Verz%"') DO (
SET Verz=%Verz%\%%i
CALL :Datei
CALL :Verzeichnis
)
GOTO :EOF

:Datei
FOR %%j in ("%Verz%\*txt") do (
REM mach was mit den Dateien
REM XCOPY nur als Test und Beispiel
ECHO d|XCOPY "%%j" "%%j.$$$"
REM acrodist /n/q "%%j"
REM DEL "%%j"
)
GOTO :EOF


Somit wird auch das aktuelle Verzeichnis mit abgearbeitet.

Cu
TheBlackBird ®
...