Estoy tratando de agrupar una cadena de lotes, pero algo impide que mi segundo lote se ejecute porque trae cosas del primer lote (supongo)
Esta es mi estructura de carpetas:
%~dp0..\× H\
|______ [00]\
| |_________________ 123.jpg
| # hard.cmd
|
|
|______ [00] - cópy\
|_________________ 345.jpg
# hard.cmd
y empiezo "%~dp0..\× H\[00]\# hard.cmd"
donde el contenido de mi # hard.cmd
es:
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
tenga en cuenta que el contenido de ambos lotes (# hard.cmd) es el mismo
si ejecuto estos lotes por separado, se ejecutan como deberían, sin embargo, si trato de encadenarlos como se demostró anteriormente, aparece la etiqueta ERROR del segundo lote, incluso si el segundo lote / carpeta no viola el conjunto de reglas. y como resultado, el segundo lote no se ejecutará como debería (como el primero)
aparte de LLAMAR intenté incluso COMENZAR , pero ninguno de mis intentos funcionó. Estas son las cosas que ya probé:
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"
y algunas combinaciones más ... ¿dónde cometí un error? todo lo que quiero es ejecutar el segundo lote por separado después de que termine el primero. preferible en la misma ventana (pero si eso no es posible, entonces el primer lote / ventana abrirá el segundo lote / ventana y el primero se cerrará a la derecha después de que el segundo comience a ejecutarse)
tal como lo veo, el segundo lote trae el conjunto de reglas del primer lote, porque cuando el primer lote termina, en la carpeta [00] hay un archivo "0.jpg" y esto activa la :ERROR
etiqueta del segundo lote.
gracias por leer esto y por cualquier ayuda
fuente
:ERROR
se llama a la rutina si alguna de estas dos condiciones es VERDADERA ... 1.) si existen archivos.jpg
y alguno.png
en la~\[00] - cópy
carpeta o 2.) si0.jpg
existe en la~\[00] - cópy
carpeta ¿Suena eso correcto? Considere rehacer su lógica para que sea más explícita y pase variables con aCALL
para las rutas, etc. y probablemente podría usar un script para ambas / todas las carpetas en lugar de tener la misma lógica en varios scripts si continúa teniendo problemas, siendo explícito siempre funciona bien para mi"%~dp0..\[00] %CC%\# hard.cmd"
usoC:\Folder\path\× H\[00]\# hard.cmd
explícitamente de esa manera para cada uno en lugar del"%~dp0..\~
y ver si eso lo resuelve. Si es así, verifique esas variables con%~dp0..
y repítalas para ver si son correctas o qué. Solo una idea, pero solo puedo suponer que es algo relacionado con eso, o el#
signo en el nombre del archivo cmd o algo por el estilo. No estoy seguro sin profundizar en ello con más detalle, pero ahora tengo poco tiempo.:ERROR
Inicialmente pensé que el problema iba a resolverse , por eso pregunté al respecto.Respuestas:
encontré la pieza faltante
PUSHD "%~dp0..\[00] %CC%\"
:fuente