如何正确地链接批次?

如何正确地链接批次?

我正在尝试从批次中构建一个链,但是有些东西阻止我的第二批执行,因为它带来了第一批中的东西(我猜)

这是我的文件夹结构:

%~dp0..\× H\
          |______ [00]\
          |         |_________________ 123.jpg
          |                            # hard.cmd
          |
          |
          |______ [00] - cópy\ 
                    |_________________ 345.jpg
                                       # hard.cmd

我从"%~dp0..\× H\[00]\# hard.cmd"哪里开始我的# hard.cmd是:

TITLE "R"
CHCP 1250 > NUL 2>&1
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
FOR /F %%a IN ('ECHO PROMPT $H ^| CMD') DO SET BS=%%a
SET "CC=- cópy"
SET "NAME=0"

:IN
   IF NOT EXIST "SOUR CE.png" ( GOTO :CHECK )
   GOTO :START

:START
   IF EXIST "SOUR CE.jpg" IF EXIST "SOUR CE.png" ( GOTO :ASK )

:ASK
   ECHO      RESET JOB ?     y / n
   SET /P "ANSWER=X%BS%                  "
   IF '%ANSWER%' == ''      GOTO :START
   IF '%ANSWER%' == 'n'     GOTO :NO
   IF '%ANSWER%' == 'y'     GOTO :YES

:NO 
   DEL /Q /A /F "SOUR CE.jpg" "%NAME%.jpg"
   GOTO :CHECK

:YES
   DEL /Q /A /F "%NAME%.jpg"
   GOTO :CHECK

:CHECK
   IF EXIST "*.jpg" IF EXIST "*.png" ( GOTO :ERROR )
   IF EXIST "%NAME%.jpg"             ( GOTO :ERROR )
   GOTO :CONTINUE

:CONTINUE
   IF EXIST "*.jpg" ( IF NOT EXIST "SOUR CE.jpg" ( REN "*.jpg" "SOUR CE.jpg" ) )
   IF EXIST "SOUR CE.jpg" ( app.exe -i "SOUR CE.jpg" -o "%NAME%.jpg"
                           GOTO :NEXT )
   GOTO :NEXT

:ERROR
   ECHO this is error
   PAUSE > NUL
   GOTO :NEXT

:NEXT
   IF EXIST   "%~dp0..\[00] %CC%\"     (
   CALL       "%~dp0..\[00] %CC%\# hard.cmd"
   IF EXIST   "%~dp0..\[00] %CC%"  ( REN "%~dp0..\[00] %CC%"  "[02]" ) )
   ECHO DONE

注意内容两个都批次(#hard.cmd)相同的

如果我单独运行这些批次,那么它们会按应有的方式执行,但是,如果我尝试按照上述示例将它们链接起来,则会弹出:错误即使第二批/文件夹没有违反规则集,第二批的标签。因此,第二批将无法按应有的方式执行(与第一批一样)

一部分称呼我甚至尝试过开始但我的尝试都没有成功。这些是我已经尝试过的事情:

CALL                      "%~dp0..\[00] %CC%\# hard.cmd"
START CALL                "%~dp0..\[00] %CC%\# hard.cmd"
START "" CALL             "%~dp0..\[00] %CC%\# hard.cmd"
START "" CMD /C           "%~dp0..\[00] %CC%\# hard.cmd"
START "" CMD /K           "%~dp0..\[00] %CC%\# hard.cmd"
START "" /WAIT  /B        "%~dp0..\[00] %CC%\# hard.cmd"
START "" /WAIT /B       /D"%~dp0..\[00] %CC%" "# hard.cmd"
START "" /WAIT /B CALL    "%~dp0..\[00] %CC%\# hard.cmd"

还有一些组合...我哪里犯了错误?我想要的只是在第一批完成后单独运行第二批。最好在同一个窗口(但如果这不可能,那么第一批/窗口将打开第二批/窗口,并且第一批/窗口将在第二批开始运行后立即关闭)

正如我所看到的,第二批带来了第一批的规则集,因为当第一批完成时,在文件夹 [00] 中有一个文件“0.jpg”,这会触发:ERROR第二批的标签。

感谢您阅读本文并提供任何帮助

答案1

找到了缺失的部分PUSHD "%~dp0..\[00] %CC%\"

:NEXT
   IF EXIST   "%~dp0..\[00] %CC%\"     (
   PUSHD      "%~dp0..\[00] %CC%\"
   CALL       "%~dp0..\[00] %CC%\# hard.cmd"
   IF EXIST   "%~dp0..\[00] %CC%"  ( REN "%~dp0..\[00] %CC%"  "[02]" ) )
   ECHO DONE

相关内容