2016-07-24 5 views
0

So habe ich eine Batch-Datei, die ein Programm mit dem Namen ausführt. Die Sache ist, dass aufgrund der Art, wie Kid3 Befehle aus Batch und Dateinamen verarbeitet, es scheint, als müssten die Zeichen in irgendeiner Weise entkommen. Hier ist ein Beispiel mit dem Programm versucht, auf einigen Dateien von einem Spiel zu arbeiten ich arbeite:Escapen von Dateinamen in For-Schleife?

Unbekannter Befehl ‚wählen 03_A_Hero's_Return.ogg‘, -h für Hilfe.
Unbekannter Befehl 'select 03_Battle's_Advent.ogg', -h für Hilfe.
MP4Modify fehlgeschlagen
Fehler bei Datei zu schreiben:
E: /RPGMaker/Games/AnimaMV/dev/AnimaMV/audio/bgm/03_Battle_Agains_Demon.4a

Ich bin nicht sicher, warum der Fehler des des Schreibens Datei ist aufgetreten, aber ich vermute, es liegt an Laufwerksfehlern, die ich scannen und reparieren muss. Im Vordergrund steht hier jedoch die Leiste "unbekannter Befehl" oben. Hier ist ein Beispiel von meinem Code:

@echo off 
setlocal enableextensions enabledelayedexpansion 
for %%x in (bgm bgs me se) do (
    cd %%x 
    for /r %%D in (*.ogg) DO (
    title Fixing sound %%x\"%%~nD.m4a" 
    if exist "%%~nD.mp4" (
     if not exist "%%~nD.m4a" (
     ren "%%~nD.mp4" "%%~nD.m4a" 
    ) else (
     del "%%~nD.mp4" 
    )) 
    %k3path% -c "select %%~nxD" -c copy -c "select %%~nD.m4a" -c paste 
    pause >nul 
    ) 
    cd .. 
) 

Beachten Sie, dass der Befehl pause >nul nur dort war die Fehlermeldungen zu erfassen. Ich weiß, dass ich die Ausgabe zu einer Datei umgeleitet hätte, die ich versuchte, aber es funktionierte nicht aus irgendeinem Grund.

+1

Ich weiß nicht, die Konsolenanwendung mit '% k3path% genannt' aber ich nehme an, die Befehlszeile ' "% k3path%" sein sollte -c wählen„%% ~ NXD "-c copy -c wählt" %% ~ nD.m4a "-c einfügen", dh doppelte Anführungszeichen nur um die Dateinamen und ohne den Befehl 'select'. – Mofi

+0

@Mofi% k3path% ist die Anwendung kid3 –

+0

@Mofi schien zu arbeiten, danke! –

Antwort

0

Korrekter Code:

@echo off 
setlocal enableextensions enabledelayedexpansion 
for %%x in (bgm bgs me se) do (
    cd %%x 
    for /r %%D in (*.ogg) DO (
    title Fixing sound %%x\"%%~nD.m4a" 
    if exist "%%~nD.mp4" (
     if not exist "%%~nD.m4a" (
     ren "%%~nD.mp4" "%%~nD.m4a" 
    ) else (
     del "%%~nD.mp4" 
    )) 
    %k3path% -c select "%%~nxD" -c copy -c select "%%~nD.m4a" -c paste 
    pause >nul 
    ) 
    cd .. 
)