Batch Befehl für Rückgabe von dir / find ausführen

Fr4g3r

Commander
Registriert
Okt. 2003
Beiträge
2.337
Hallo zusammen,

ich bräuchte etwas Hilfe für ein Skript das folgendes erledigen soll:

Alle PDF-Dateien die in einem angegebenen Verzeichnis oder dessen Unterordnern liegen sollen einzeln verschlüsselt werden.
Der Befehl zur Verschlüsselung sieht dabei wie folgt aus:
Code:
Encryptionprogram.exe -x key -e PfadZurDatei

Wie ich an den vollständigen Pfad der PDF-Dateien komme habe ich schon gefunden:
Code:
d:
cd D:\TEST
dir /s /b /a | find ".pdf"

Ausgabe:
D:\TEST>dir /s /b /a | find ".pdf"
D:\TEST\Test1.pdf
D:\TEST\Test2.pdf

Was mir nun fehlt ist der Code zur Ausführung der Verschlüsselung für jede Zeile dir mir der dir/find Befehl zurückliefert.

Sprich im Prinzip:

Code:
Encryptionprogram.exe -x key -e D:\TEST\Test1.pdf
Encryptionprogram.exe -x key -e D:\TEST\Test2.pdf
usw...

Kann mir hierbei jemand helfen?

Vielen Dank schon im Voraus
 
Zuletzt bearbeitet:
Hast du folgendes schon versucht?

Code:
dir /s /b /a | find ".pdf" | Encryptionprogram.exe -x key

Ansonsten kannst du die Ausgabe des "dir /s /b /a | find ".pdf"" in eine Datei umleiten und diese temporäre Datei mittels einer Iteration dem Programm liefern:

REM steht für einen Kommentar im Batch aber ich trage dies hier mit "#" ein, da das CODE-Tag diese farblich kennzeichnet.

Code:
#Dateien mit der Endung PDF finden und in Datei umleiten
dir /s /b /a | find ".pdf" > temp_gefunden.txt

#For-Schleife liest Einfräge aus Textdatei und ruft für jeden Eintrag das Verschlüsselungsprogramm auf.
for /f %f IN (temp_gefunden.txt) do (
     Encryptionprogram.exe -x key -e %f
)

#Löscht die temporäre Datei
del  temp_gefunden.txt

So funktioniert es zumindest in der Theorie. Ob es aber mit deinem Verschlüsselungsprogramm geht weiss ich nicht.
 
Zuletzt bearbeitet: (/f hizugefügt)
Das mit dem Dumpfile ist eigentlich unnötig. Sollte auch etwa so gehen...

/edit
Ok sorry, hatte das nur fix aus einem bestehendem Script kopiert und leicht abgeändert, grade getestet und funktioniert natürlich nicht ;)

Nochmal leicht abgeändert gehts aber... Script war ursprünglich zum Ordner, nicht Dateien listen.

Code:
@echo off
 echo.
 echo Pfad zu den .pdf eingeben oder den Ordner hier hereinziehen!
 echo.
 echo.
 set /p "FilePath=Pfad: "
cls & echo.

for /f %%i in ('dir /b "%FilePath%\*.pdf"') do (

   echo ^> Encrypting %%~nxi ...
   Encryptionprogram.exe -x key -e "%%~si"

)

echo.
pause
 
Zuletzt bearbeitet: (Umlautkompatiblität)
Habe es mit eurer Hilfe nun hinbekommen.

Code:
for /f %%i in ('dir /b /a /s "D:\Test\*.pdf"') do (
 
Encryptionprogram.exe -x key -e "%%~si"
 
)

Vielen Dank an euch!
Ergänzung ()

Da es jetzt noch einen Änderungswunsch gab, hätte ich eine weitere Bitte.
Für eine Datei soll es eine feste Ausnahme geben.
Das lässt sich denke ich problemlos über eine IF-Abfrage in der FOR-Schleife regeln (zumindest wenn man den Syntax von Bash/Batch beherrscht :p).
Der Code von oben funktioniert wie gesagt bereits, ich bräuchte jetzt noch eine Ausnahme in der Form:
If String in Variable i contains *filelist.pdf dann fahre mit dem nächsten Satz der FOR-Schleife fort, ansonsten Encryptionprogram.exe -x key -e "%%~si".
Ich danke euch auf jeden Fall schon mal (erneut) für eure Hilfe.
In AutoIT würde ich es problemlos alleine hinbekommen, es soll aber in Batch sein. :(

EDIT://
Habs hinbekommen :D

Code:
set _key=MAIL@TLD.com
set _folder=E:\Path\to\Data\Root\
set _subfolder=UserFolder
set _fullpath=%_folder%%_subfolder%


for /f %%i in ('dir /b /a /s "%_fullpath%\*.pdf"') do (
	if NOT %%~NXi == filelist.pdf (
   Encryptionprogram.exe -x %_key% -e "%%~si"
   )
)



 
Zuletzt bearbeitet:
Zurück
Oben