2016-04-24 6 views
0

Ich habe ein Problem mit einer Bat-Datei, die ich schreibe.Bat-Datei überprüft die alte Datei und löscht die SET-Variable zwischen den Ausführungen nicht

Image: http://i67.photobucket.com/albums/h308/denash1/files.png

(darf ich keine Bilder veröffentlichen noch)

Das Script in der „EXTRACT_ALL (no_decompression) .bat sich wie folgt:

@echo off 
for /r %%f in (*.cpk) do (
SET filename=%%~nf) 
mkdir %filename% 
copy %filename%.cpk .\%filename% 
copy CriPakTools.exe .\%filename% 
cd %filename% 
for /r %%f in (*.cpk) do "CriPakTools.exe" "%%f" ALL 
pause 

Every-Zeit Ich führe diesen Code läuft es das erste Mal gut und es findet die Datei "725.cpk", es legt es dann in den Ordner 725, und extrahiert dann den Inhalt in diesen Ordner, was in Ordnung ist.

Aber das zweite Mal, wenn ich es ausführe, bewegt es sich nur noch und entpackt die Datei 725.cpk und ignoriert die andere CPK-Datei.

Auch wenn ich dann die Datei "725.cpk" lösche dann beschwert sich, dass die Datei fehlt. Kann mir bitte jemand helfen und erklären, warum die .cmd-Datei niemals die andere Datei "110638.cpk" überprüft, da sie sich im selben Verzeichnis befindet?

Vielen Dank für Ihre Hilfe!

+0

ersten 'for' setzt die Variable' filename' zu ​​jeder '.cpk' Datei, so endet es die letzte von ihnen. – Stephan

+0

Es tut mir sehr leid, ich verstehe nicht, was Sie meinen .. –

+0

führen Sie Ihren Code mit 'echo on' und Sie werden sehen. – Stephan

Antwort

0

(ungetestet Code)

@echo off 
REM with every file fitting to this file mask do the following: 
for %%f in (*.cpk) do (
    REM get the name only ,without path or extension and make a directory with this name, redirect "already exist" message to NUL: 
    mkdir %%~nf 2>nul 
    REM copy the file to the new folder: 
    copy %%f .\%%~nf 
    REM copy another file to the same destination: 
    copy CriPakTools.exe .\%%~nf 
    REM set the working directory to the new folder 
    pushd %%~nf 
    REM execute the tool: 
    "CriPakTools.exe" "%%f" ALL 
    REM go back to previous working directory: 
    popd 
) 
pause 
+0

Vielen Dank, dieser Code hat mir geholfen. Es wäre schön, wenn Sie mir weitere Erklärungen geben könnten. –

+0

@DenashSubramaniam hinzugefügt Erklärungen. – Stephan

Verwandte Themen