Doppelte Dateiendungen mittels Batch entfernen

14/11/2007 - 14:52 von gerd.roethig | Report spam
Hallo,

als Erstes Entschuldigung: Wie der Betreff schon aussagt, geht es hier
weniger um MS-DOS, sondern um Batch-Programmierung unter Windows
(2000).

Nachdem ich danke der Hilfe von Heiko Rost erst mal meinen ersten
Versuch zum Laufen bekommen habe, kommt jetzt Stufe 2 :-)

Das Problem: Ich muss mitunter Dateien mittels GnuPG verschlüsseln.
Besonders bei mehreren Empfàngern geht das ganz leicht mit GPGShell.
Leider erzeugt dieses Programm immer verschlüsselte Dateien nach
folgendem Schema:

Dateiname.Original-Endung.pgp

Diese Unart làsst sich leider nicht wegkonfigurieren, was unter
anderem daran liegt, dass ich der einzige GPGShell-Nutzer bin, der
sich daran stört.

Leider akzeptiert das Mailsystem des Empfàngers dieser Dateien nur
Attachments mit einfacher Dateiendung, also

Dateiname.pgp

Mein erster Versuch sieht jetzt also so aus:

ren *.pdf *.pdx
for %%i in (*.pgp) do ren "%%i" "%%~ni"
ren *.pdf *.pgp
ren *.pdx *.pdf

Funktioniert auch genau so, wie es soll (aus Name.pdf.pgp wird
letztendlich Name.pgp; alle anderen PDFs im Verzeichnis bleiben auch
PDFs).
Hat nur den Nachteil, dass man das Ganze extra für jeden zu
verschlüsselnden Dateityp haben muss - mir wàre eine universelle
Lösung, die mit jedem Dateityp funktioniert, lieber.

Làsst sich das mit Batchmitteln erreichen? Oder wàre es dann doch
besser, auf eine "höhere" Programmiersprache, wie C(++) oder Delphi,
auszuweichen?

Vielen Dank für alle hilfreichen Tipps im voraus und beste Grüße

Gerd
 

Lesen sie die antworten

#1 Heiko Rost
14/11/2007 - 16:56 | Warnen spam
Am Wed, 14 Nov 2007 05:52:15 -0800 schrieb :

Leider erzeugt dieses Programm immer verschlüsselte Dateien nach
folgendem Schema:

Dateiname.Original-Endung.pgp

Diese Unart làsst sich leider nicht wegkonfigurieren, was unter
anderem daran liegt, dass ich der einzige GPGShell-Nutzer bin, der
sich daran stört.

Leider akzeptiert das Mailsystem des Empfàngers dieser Dateien nur
Attachments mit einfacher Dateiendung, also

Dateiname.pgp
...
Làsst sich das mit Batchmitteln erreichen?



Mit (alles auf eine Zeile)

for %%a in ("*.pgp") do ((ren "%%a" "%%~na") && for %%b in ("%%~na") do
((ren %%b "%%~nb") && (ren "%%~nb" "%%~nb.pgp")))

funktioniert das unter XP, mit w2k kann ich es nicht testen. Das macht in
der àußeren For-Schleife die Umbenennung datei.aaa.pgp -> datei.aaa und
startet anschließend mit dieser umbenannten datei eine zweite Schleife, die
datei.aaa->datei und datei->datei.pgp umbenennt. Die fehlenden "" bei ren
%%b ... sind Absicht, CMD hat manchmal etwas seltsame Ansichten, wann es
diese selber hinzufügt.

Für die bessere Lösung, eine Umbenennung wie datei.aaa.pgp -> datei_aaa.pgp
zu machen, fàllt mir mit Bordmitteln keine Lösung ein. Eine Alternative
wàre, einfach alle Dateien ohne jede Umbenennung in ein Archiv zu packen.

Du solltest außerdem in Betracht ziehen, an Stelle von ren jeweils copy zu
benutzen, sonst brauchst Du vor jedem Umbenennen noch einen Test, ob die
Zieldatei schon existiert und ggf. gelöscht werden muß.

Oder wàre es dann doch
besser, auf eine "höhere" Programmiersprache, wie C(++) oder Delphi,
auszuweichen?



Mit den Standard-Batch-Befehlen stößt man schnell an die Grenzen. Wenn Du
schon eine andere Programmiersprache hast, spricht nichts dagegen, für
komplexere Probleme diese zu benutzen.

Gruß Heiko

Ähnliche fragen