2012-04-13 3 views
0

Ich habe versucht, ein einfaches Programm zu schreiben. Es sollte .pak-Dateien finden (in diesem Fall zip, aber mit geänderter Spannung), entpacken und mit arc komprimieren.Batch - Schleife vermisst Befehle nach wenigen Durchgängen

@echo off 
for /r %%i in (*.pak) do ren %%~i %%~ni.arc 
for /r %%i in (*.arc) do (
mkdir %%~ni 
cd %%~ni 
..\arc.exe x -o+ "%%~i" //extract archive at current location// 
del "%%~i" 
..\arc.exe a -m9 -r "%%~i" *.* //pack files and folders in current folder and create 
archive at specific location// 
cd.. 
RD /s /q %%~ni 
) 
pause 

Arc Befehl funktioniert, ich bin mir sicher. Bis wenige Pässe später funktioniert alles perfekt. Es scheint, dass es auf einmal aufgehört hat, den cd .. -Befehl zu machen, weil es anfängt, einen Ordner zu erstellen, dann einen Ordner innerhalb und dann wieder und wieder.

Standorte von Dateien:
... \ arc.exe
... \ program.bat
... \ file1.pak
... \ folder1 \ file2.pak
.. folder2. \ \ file3.pak
etc für Pack

ich habe auch versucht

@echo off 
setlocal enableextensions enabledelayedexpansion 
for /r %%i in (*.pak) do ren %%~i %%~ni.arc 
for /r %%i in (*.arc) do (
mkdir %%~ni 
cd %%~ni 
..\arc.exe x -o+ "%%~i" 
del "%%~i" 
..\arc.exe a -m9 -r "%%~i" *.* 
cd.. 
RD /s /q %%~ni 
) 
pause 

das gleiche Ergebnis

+0

etwas zu tun noch etwas komplex mit DOS Batch-Dateien ist ein Schmerz. Können Sie zu PowerShell wechseln? Wenn dem so ist, schlage ich vor, das zu prüfen. –

+0

Nein, weil ich ein "inverses" Programm machen möchte, das von jedem benutzt werden kann, ohne zusätzliche Dinge zu installieren. – user1331954

+0

Gibt es Unterordner? –

Antwort

0

Sie möchten definitiv verzögerte Erweiterung nicht aktivieren, da es Dateinamen beschädigt, wenn sie ! Zeichen enthalten.

Ich glaube, Ihr Problem ist einfach, Sie haben nicht Ihre Pfad/Dateinamen zitiert. Leerzeichen und Sonderzeichen in Pfad/Name verursachen Probleme, wenn sie nicht zitiert werden.

Das ist völlig ungetestet, aber ich denke, es kann Ihnen Problem beheben:

@echo off 
for /r %%i in (*.pak) do ren "%%i" "%%~ni.arc" 
for /r %%i in (*.arc) do (
    mkdir "%%~ni" 
    cd "%%~ni" 
    ..\arc.exe x -o+ "%%~i" //extract archive at current location// 
    del "%%i" 
    ..\arc.exe a -m9 -r "%%i" *.* //pack files and folders in current folder and create archive at specific location// 
    cd.. 
    rd /s /q "%%~ni" 
) 
pause 
+0

Danke für die Antwort. Unnötig funktioniert es immer noch nicht. Irgendwann sagt es, dass es keine bestimmte Datei finden kann. Wahrscheinlich bei rd/s/q "%% ~ ni". Es hat viele Ordner nside und in einem Ordner erstellt und der Pfad ist so lang, dass Sie nicht alle öffnen können. Das komische Ding ist das: Wenn ich diese Schleife für jede Datei (sogar 10) mit dem vollständigen Pfad für %% ~ i und dem Dateinamen für %% i neu schreibe, funktioniert es ... – user1331954

+0

Vielleicht ist das Problem, dass viele .pak-Dateien die gleicher Name? – user1331954