1. modificado el codigo a lo que deberia estar correcto como buena practica
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º SHAPES DE LOS ERRORES ENCONTRADOS º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
For /F "Tokens=* Delims="
%%a In ('""sqlplus.exe" -s QA_DATAC/qa_dc
@orcl_qa
@%sqlPath%t"'
) do (set res=
%%c fme.exe "%PATH_FME%SHAPE_ERRORES.fmw" --COMUNA "%res%" --DestDataset_ORACLE8I_DB "ORCL_QA" --OUT_USER "QA_DATAC" --OUT_PASSWORD "qa_dc"
)
quedo en la misma face que el anterior, ejecuta todo sin problemas hasta que tiene que cerrarse el for de echo, si lo analizo bn esto queda pausado antes de llamar al programa FME.EXE
2. Batch no puede "pedir el cierre de de un bloque de código abierto añadiendo el comando Exit", especifica claramente cual es el mensaje de error que se muestra en consola (aunque obviamente el mensaje sea un error de sintaxis).
R.- la consola no me muestra ni un error, la consola no se cierra, sigue ejecutando mi programa, si no escribo nada, queda eternamente ahi, el prompt puede escribir o saltar espacios, solo despues que escribo exit, sigue con la parte que falta del bat
3. El bloque del FOR deberías tratar de cerrarlo usando los operadores de agrupación () más que nada para no caer en malas prácticas de programación que conllevan inevitablemente a posibles errores de ejecución (sobre todo de sintaxis, al concatenar comandos en un bloque abierto de FOR), cierra el bloque sí o sí.
R.- corregido en pto 1
4. Ten en cuenta que, en caso de que la variable "%path_sql%" no contenga comillas dobles al principio y al final, y si además la ruta contuviese caracteres reservados por el sistema (ej: C:\Program Files (x86)\sql\ ) entonces ahí tienes el motivo del error, o mejor dicho del cierre inesperado de la consola, debido a un conflicto de sintaxis al intentar parsear los falsos operadores de agrupación por haber dejado la cadena de string abierta, para solucionarlo, encierra el string debidamente.
R.-no se cuales serian las palabras reservadas del sistema, para evitar esto en la declaracion le coloco las "" o al momento de usar esta variable la uso con "" ?... de todas maneras la ruta que tienen todas las path_XX es \\111.111.11.111\qa_datac\ENTRADA\
si esta variable tiene que ser usada con "", como se esta usando en el mismo ejemplo, deberia tener comillas por si sola? me explico
DEL ""
%PATH_SQL%"ESTADISTICA.SQL"--¿?
5. Aplica también las mismas reglas de cierre de string a esta instrucción (repito, en caso de que no estén cerrados, porque por lo que muestras no lo puedo saber:
Por norma general las rutas con espacios en el nombre deben encerrarse usando comillas dobles para poder pasarlo como argumento, ya que cada argumento está delimitado por un espacio y por ende una ruta abierta y con espacios será una ruta dividida en varios argumentos para la aplicación, la ruta completa será irreconocible debido a que el recuento de parámetros será incorrecto.
Lo mismo se aplica a cualquier valor de string que quieras pasarle a un parámetro (tenga o no espacios, es lo correcto):
fme.exe "%path_fme%errores_archivos.fmw" --comuna "%res%" --destdataset_oracle8i_db "orcl_qa" --out_user "qa_datac" --out_password "qa_dc"
R.- Modificado tambien en Pto 1
PERDÓN PERDÓN
... EL ERROR NO ESTA EN EL FOR, me dedique a verificar si estaba bn, porque al hacer las modificaciones que me indicasteme di cuenta que tambien funcionaba la llamada al programa FME, le puse pauses por doquier xD, hasta que di con el error, no se si es que me puedes ayudar porque es una mezcla entre Sql y el Bat tengo un codigo gigante, solo te mostrare el error para no marear
DEL "
%PATH_SQL%ESTADISTICA.SQL"
ECHO EXEC SP_VALIDACION_GEOMETRIAS;
>>"
%PATH_SQL%ESTADISTICA.SQL"
ECHO EXIT
>>"
%PATH_SQL%ESTADISTICA.SQL"
sqlplus %conexion% @%PATH_SQL%ESTADISTICA.SQL
sqlplus %conexion% @%PATH_SQL%COUNT.SQL rem <-- el desgraciado esta aca
CALL "
%PATH_SCRIPT%VAR_ERRORES.BAT" rem --
> aqui pense que estaba el error
eso que vez, es una llamada una query de oracle, conexion tiene la contraseña/user/service @bla...bla es la llamada a count que es un archivo almacenado en la ruta que esta en Path_SQL, el archivo tiene esccrito esto
SELECT COUNT(*) FROM errores_geom; -- en oracle las sentencias se terminan con un ;
/* en la segunda linea dice */ exit -- sin ;
el exit es para que pueda salir de la llamada desde el bath, pero no la esta tomando, aqui es donde te pido ayuda a ti, se supone que escribiendole al archivo exit sale de la query, pero no lo hace, me hecharias una mano? que puede ser?
Saludos y perdon por la equivocacion de antes... aaa de todas maneras me puedes responder lo que esta en
Rojo en el punto 4, para saber para una, siguiente vez
Saludos y gracias por tu ayuda y sorry por la mezcla de etiquetas, intente dejarlo ordenado pero parece que no me funciono xD...
Ahi si, tenia una etiqueta de citar de mas