rotnasenkater
Goto Top

Programm in allen Unterverzeichnissen ausführen

Servus, liebe Gemeinde!
Da mir hier schonmal so freundlich und kompetent geholfen wurde, wende ich mich nochmals mit einer Batch-Frage an Euch.

Folgende Ausgangssituation: ich habe über 800 Unterverzeichnisse, in denen jeweils ein mit ECM gepacktes ISO ist. Zum Entpacken benutze ich das Programm "unecm.exe". Ich will das nun automatisieren, so daß die jeweilige ECM-Datei entpackt wird, nach erfolgreichem (!) Entpacken die ECM-Datei gelöscht wird und es dann im nächsten Unterverzeichnis weitergeht. Vielleicht nochmal zur Veranschaulichung die Filestruktur:

unecm.exe
Verzeichnis 1\iso1.iso.ecm
Verzeichnis 2\iso2.iso.ecm
Verzeichnis 3\iso3.iso.ecm
Verzeichnis 4\iso4.iso.ecm
...

nach dem Entpacken:

unecm.exe
Verzeichnis 1\iso1.iso
Verzeichnis 2\iso2.iso
Verzeichnis 3\iso3.iso
Verzeichnis 4\iso4.iso
...

Es kann sein, daß unecm.exe in jedes Verzeichnis verschoben/kopiert werden muß - keine Ahnung, das sehe ich erst bei ausprobieren der Batchdatei.

Vielen Dank im voraus!

Content-Key: 311199

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

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

Mitglied: 129813
Solution 129813 Jul 29, 2016 at 08:21:11 (UTC)
Goto Top
Don't know the tool, but try this.(change paths)
@echo off
for /f "delims=" %%a in ('dir /b /s /a-d "c:\RootFolder\*.ecm"') do (  
    "c:\tools\unecm.exe" "%%a" && del "%%a"  
)
Regards
Member: Rotnasenkater
Rotnasenkater Jul 29, 2016 at 08:47:58 (UTC)
Goto Top
Perfekt! Dankeschön, haut wunderbar hin...

Perfect! Thanx a lot, works like a charm...
Member: Biber
Biber Jul 29, 2016 updated at 08:53:09 (UTC)
Goto Top
Moin Rotnasenkater,

ergänzend zu highloads Skizze würde ich noch zusätzlich mit PushD/PopD jeweils in das Verzeichnis wechseln, in dem die Quell-*.ecm-Datei liegt.

Andernfalls sind evtl hinterhr alle *.iso-Dateien in dem Ordner, in dem du die Batch gestarttet hast.

@echo off
for /f "delims=" %%a in ('dir /b /s /a-d "c:\RootFolder\*.ecm"') do (  
    PushD "%%~dpa"  
    "c:\tools\unecm.exe" "%%a" && del "%%a"  
   PopD
)

Grüße
Biber

[Edit] Kommentar hat sich mit deiner Antwort überschnitten. Also bitte ignorieren. [/Edit]
Member: Rotnasenkater
Rotnasenkater Jul 29, 2016 at 10:43:03 (UTC)
Goto Top
"... Andernfalls sind evtl hinterhr alle *.iso-Dateien in dem Ordner, in dem du die Batch gestarttet hast. ..."

Ist zum Glück bisher noch nicht passiert, aber danke für die Ergänzung. Weiß jetzt wenigstens was ich zu tun habe, wenn's wirklich mal daran klemmt...

Hab's gerade ausprobiert, und bekomme eine Fehlermeldung "Das System kann den angegebenen Pfad nicht finden". Funktioniert Deine Batch überhaupt unter einem "nackigen" Win7 Pro? Die von highload funktioniert ohne Probleme...
Member: Biber
Biber Jul 29, 2016 at 11:28:19 (UTC)
Goto Top
Moin Rotnasenkater,

auch die von mir ergänzte Variante sollte funktionieren - kenne jetzt keine Version Win 7 oder höher, die PushD/PopD nicht kennt.

Habe gerade noch folgende FOR-Konstruktion am Cmd-Prompt (Win 7) getestet:
for /f "delims=" %a in ('dir /b /s /a-d "K:\temp\*.txt"') do @pushD "%~dpa" & cd & PopD  
In diesem PoC ist dein "c:\Start\Mir\Mein\ProgrammXY.exe" ersetzt durch ein cd. und es wird mir jeweils das richtig gesetzte Verzeichnis angezeigt.

Wüsste nicht, was noch fehlt/schiefläuft.

Grüße
Biber
Member: Rotnasenkater
Rotnasenkater Jul 29, 2016 at 17:02:55 (UTC)
Goto Top
Ich habe mal Deinen Einzeiler als Batch-Datei abgespeichert (test.bat) und ausgeführt.

for /f "delims=" %a in ('dir /b /s /a-d "d:\temp\*.txt"') do @pushD "%~dpa" & cd & PopD  

Ergebnis s. Screenshot. Was haut da bei mir nicht hin, muß ich im Windows noch irgendwas umstellen? Das Verzeichnis d:\temp existiert natürlich und ist mein Standard-Tempverzeichnis.

Grüße

screenshot
Mitglied: 129813
Solution 129813 Jul 29, 2016 updated at 17:30:26 (UTC)
Goto Top
You did it absolutely wrong, have a sharp look at your commandline in the screenshot!!

screenshot
This is absolutely not the line above face-big-smile

This line is for executing it directly on the commandline (entering it manually in the console):
for /f "delims=" %a in ('dir /b /s /a-d "d:\temp\*.txt"') do @pushD "%~dpa" & cd & PopD  
You see the "single percent signs %".

Inside a batch file you must double those:
for /f "delims=" %%a in ('dir /b /s /a-d "d:\temp\*.txt"') do @pushD "%%~dpa" & cd & PopD  

So it's only a matter of your "precision" face-wink

Regards
Member: Rotnasenkater
Rotnasenkater Jul 29, 2016 at 18:04:52 (UTC)
Goto Top
Ah jetzt haut's hin. Danke