como ingressar em “SE FOR batch” com “FOR DELIMS batch”?

1

aqui é a primeira parte do meu script:

@echo off
cd /D "E:\[0] EE\feed\"
if exist "*.ss" (
if not exist "O.ss" (
    FOR %%A IN (*.ss) DO (
        IF /I NOT "%%~A"=="O2.ss" REN "%%~A" "O.ss" > nul 2>&1
    )))
pause

e esta é minha segunda parte do roteiro:

@Echo off & SetLocal EnableExtensions EnableDelayedExpansion
Set "Video="
for /f "delims=" %%a in ('findstr /i "^Video=" job1.ini') do set "%%a"
"C:\Temp\mkvmerge.exe" -o "E:\done.mkv" --title "B 1" "%Video%" "C:\Temp\audio.flac"
pause

se eu os executar separadamente, eles estão sendo executados como esperado, no entanto, quando eu participo desse modo:

@Echo off & SetLocal EnableExtensions EnableDelayedExpansion 
cd /D "E:\[0] EE\feed\" 
if exist "*.ss" ( 
if not exist "O.ss" (
    FOR %%A IN (*.ss) DO (
        IF /I NOT "%%~A"=="O2.ss" REN "%%~A" "O.ss" > nul 2>&1
    ))) 
Set "Video=" 
for /f "delims=" %%a in ('findstr /i "^Video=" job1.ini') do set "%%a" 
"C:\Temp\mkvmerge.exe" -o "E:\done.mkv" --title "B 1" "%Video%" "C:\Temp\audio.flac" 
pause

Eu recebo erro:

findstr: cannot open job1.ini

Eu acho que é porque eu tenho %% A nessas declarações IF?

existe alguma maneira de corrigir isso, por favor?

    
por user902300 08.05.2018 / 03:26

1 resposta

0

Você pode tentar isso:

@Echo off & SetLocal EnableExtensions EnableDelayedExpansion 
PushD "E:\[0] EE\feed\" 
if exist "*.ss" ( 
if not exist "O.ss" (
    FOR %%A IN (*.ss) DO (
        IF /I NOT "%%~A"=="O2.ss" REN "%%~A" "O.ss" > nul 2>&1
    )))
PopD 
Set "Video=" 
for /f "delims=" %%a in ('findstr /i "^Video=" job1.ini') do set "%%a" 
"C:\Temp\mkvmerge.exe" -o "E:\done.mkv" --title "B 1" "%Video%" "C:\Temp\audio.flac" 
pause

Na primeira parte, você alterou o dir para fora da pasta em que o lote e presumivelmente também o job1.ini estava localizado.
PushD funciona como cd /d , mas armazena a lcação antiga em uma pilha interna e PopD restaura a localização guardada.

    
por 08.05.2018 / 07:31