7zip rekursives Entpacken funktioniert gut in CMD, aber nicht im Batch

425
suyash sikarwar

Ich verwende diesen Befehl, um rekursiv aus dem Quellordner ( D:\cnosftp\) zu entpacken und die extrahierte Datei in demselben Unterordner abzulegen.

FOR /R "D:\cnosftp\" %I IN (*.gz) DO "C:\Program Files\7-Zip\7z.exe" x "%I" -aoa -o"%~dpI" 

Dies funktioniert gut, wenn es in CMD ausgeführt wird. Wenn derselbe Befehl jedoch in eine Batchdatei eingefügt und ausgeführt wird, wird er ausgelöst, aber ohne Aktion in einem Blip geschlossen. Irgendeine Idee, was mache ich hier? Oder jeder kann sagen, wie er in eine Batchdatei verpackt wird.

2
Verwenden Sie zwei Prozentzeichen im Befehl "FOR" für Variablen. . . FOR / R "D: \ cnosftp \" %% I IN (* .gz) DO C: \ Programme \ 7-Zip \ 7z.exe "x" %% I "-aoa -o" %% ~ dpI "` um es als Batchdatei auszuführen. Pimp Juice IT vor 5 Jahren 0

1 Antwort auf die Frage

0
TOOGAM

Versuchen Sie stattdessen Folgendes auszuführen:

FOR / R "D: \ cnosftp \"% I IN (* .gz) Echo "C: \ Programme \ 7-Zip \ 7z.exe" x "% I" -aoa -o "% ~ dpI"

Stellen Sie sicher, dass die Ausgabe Ihren Erwartungen entspricht.

Hinweis: Es wird wahrscheinlich nicht sein. Ersetzen Sie% bei Bedarf durch %%. (Wenn zwei% nicht funktionieren, versuchen Sie es mit drei oder vier, aber ich denke, dass zwei ausreichen könnten.)

Das wahrscheinliche Problem ist, dass der Befehl FOR möglicherweise zusätzliche% benötigt, wenn er in einer Batchdatei ausgeführt wird. Wenn Sie den Befehl echo verwenden, um auszugeben, welcher Befehl tatsächlich ausgeführt wird, können Sie häufig feststellen, welche Variablen die Art und Weise erweitern, in der Sie sie benötigen / benötigen, und zu welchen Variablen% s hinzugefügt werden muss.