elektro cuando me dices que el paracentesis quedo abierto, no es asi lo cierro al final del codigo
Culpa mia, para serte sincero (y sin ánimo de ofender) vi la instrucción de ese FOR single-line y no seguí leyendo el resto del código al no ver un paréntesis de cierre, supuse que ahí estaba el problema, ya que aparte de que el código es bastante inteligible al no estar indentado y todo en mayúsculas, no me di cuenta que utilizabas la variable del FOR más abajo, culpa mia por mirarlo aprisa. Por eso te dije también lo del "mal" redireccionamiento.
Olvida todo lo que dije entonces, como veo que el problema no era lo que a mi me parecia en un principio, ahora necesito preguntarte:
¿Que significa "se cae"?, ¿cual es el problema con el código?, da detalles del error.
Si "se cae" significa que se te cierra la instancia de la CMD (probablemente debido a un error de sintaxis) entonces primero ejecuta la CMD y desde allí inicias el Script para que no se cierre y poder ver el detalle del error que te salga.
De todas formas lo he examinado de nuevo (esta vez bien hecho xD, disculpa), y veo que intentas setear la misma variable (varfull) dentro del bloque del For y utilizarla, pero esto no es posible (no de la forma en la que lo haces) ya que a menos que expandas la variable siempre devolverá el mismo valor con el que la inicializaste.
Para resolver este problema podrías utilizar la declaración "Setlocal EnableDelayedExpansion", o utilizar el comando Call.
EDITO: Aparte de eso, estás usando los caracteres reservados de agrupación () al usar el comando Echo, si quieres que el último paréntesis se escriba ) tienes que escaparlo.
Prueba así:
Código:
FOR /F "UseBackQ delims=!" %%x in (
"%LIST_WDG_PATH%LIST_COMUNAS.TXT"
) Do (
Echo %%x>"%LIST_WDG_PATH%COMUNAS.TXT"
SET /A "VARFULL=1"
DEL "%PATH_SQL%ESTADISTICA.SQL"
Call ECHO EXEC sp_log_FULL^(%%VARFULL%%^);>>"%PATH_SQL%ESTADISTICA.SQL"
ECHO COMMIT;>>"%PATH_SQL%ESTADISTICA.SQL"
ECHO EXIT;>>"%PATH_SQL%ESTADISTICA.SQL"
sqlplus %conexion% @"%PATH_SQL%ESTADISTICA.SQL"
CALL "%PATH_SCRIPT%carga.bat"
Call SET /A "VARFULL=2"
DEL "%PATH_SQL%ESTADISTICA.SQL"
Call ECHO EXEC sp_log_FULL^(%%VARFULL%%^);>>"%PATH_SQL%ESTADISTICA.SQL"
ECHO COMMIT;>>"%PATH_SQL%ESTADISTICA.SQL"
ECHO EXIT;>>"%PATH_SQL%ESTADISTICA.SQL"
sqlplus %conexion% @"%PATH_SQL%ESTADISTICA.SQL"
)
EDITO: Puedes simplificarlo de esta manera (aunque no estoy seguro de si elcódigo hace lo que quieres, ya que no manejo SQL):
Código:
FOR /F "UseBackQ Delims=!" %%# In (
"%LIST_WDG_PATH%LIST_COMUNAS.TXT"
) Do (
(Echo %%#)>"%LIST_WDG_PATH%COMUNAS.TXT"
For /L %%x In (1, 1, 2) Do (
(
Call Echo:EXEC sp_log_FULL^(%%x^);
Echo:COMMIT;
Echo:EXIT;
)>"%PATH_SQL%ESTADISTICA.SQL"
SQLplus.exe "%conexion%" @"%PATH_SQL%ESTADISTICA.SQL"
)
)
Saludos!