como encadear corretamente os lotes?

0

Estou tentando fazer uma cadeia a partir de lotes, mas algo impede que meu segundo lote seja executado porque ele traz material do primeiro lote (eu acho)

esta é a minha estrutura de pastas:

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

e começo em "%~dp0..\× H\[00]\# hard.cmd" , onde o conteúdo do meu # 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

observe que o conteúdo de ambos lotes (# hard.cmd) é mesmo

se eu executar esses lotes separadamente, eles serão executados como deveriam, no entanto, se tentar encadeá-los conforme demonstrado acima, será exibido o rótulo : ERROR do segundo lote, mesmo se o segundo lote / pasta não violar o conjunto de regras. e como resultado o 2º lote não executará como deveria (como o primeiro)

além de CALL ing eu tentei START ing, mas nenhuma das minhas tentativas funcionou. estas são as coisas que eu já tentei:

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"

e mais algumas combinações ... onde cometi um erro? tudo que eu quero é executar o 2º lote separadamente após o 1º terminar. preferível na mesma janela (mas se isso não for possível, então o 1º lote / janela abrirá o 2º lote / janela e o primeiro fechará logo após a 2ª parte começar a correr)

como eu vejo, o segundo lote traz o conjunto de regras do primeiro lote, porque quando o primeiro lote termina, então na pasta [00] existe um arquivo "0.jpg" e isso aciona o rótulo :ERROR do segundo lote.

obrigado a ler isto e por qualquer ajuda

    
por user902300 29.05.2018 / 03:40

1 resposta

0

encontrou a peça que faltava 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
    
por 30.05.2018 / 14:59