1

вот первая часть моего сценария:

@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

и это моя вторая часть сценария:

@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

если я запускаю их отдельно, они выполняются, как и ожидалось, однако, когда я присоединяюсь к ним так:

@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

Я получаю ошибку:

findstr: не могу открыть job1.ini

Я полагаю, что это потому, что у меня есть %% A в этих заявлениях IF?

Есть ли способ, как это исправить, пожалуйста?

1 ответ1

0

Вы можете попробовать это:

@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

В первой части вы переместили dir из папки, в которой находился пакет, и предположительно также в файл job1.ini.
PushD работает как cd /d но сохраняет старую версию во внутреннем стеке, а PopD восстанавливает сохраненное местоположение.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .