Cualquier variable que inicialices dentro del For seguirá existiendo tras finalizar el bloque del FOR, ¿por que piensas que no es así?,
otra cosa muy distinta sería que el output de la aplicación sqlplus.exe tuviera más de una linea, con una linea final en blanco, y en ese caso el For, al iterar las lineas, se estaría sobre-escribiendo el valor de la variable, al final asignando un valor vacio.
Asegúrate de filtrar lineas vacías y/o en blanco del output, de la siguiente manera:
Nota: Ten en cuenta que en el código que has mostrado estás utilizando el modificador UseBackQ en el For, y eso altera el comportamiento de las comillas dobles, no manejo sqlplus, pero creo que no necesites usarlo.
Además de eso, estás dejando un espacio en blanco a la derecha del operador de asignación (Set valor= %%i)), corrígelo, utiliza la sintaxis correcta: Set "valor=%%~i".
Saludos
otra cosa muy distinta sería que el output de la aplicación sqlplus.exe tuviera más de una linea, con una linea final en blanco, y en ese caso el For, al iterar las lineas, se estaría sobre-escribiendo el valor de la variable, al final asignando un valor vacio.
Asegúrate de filtrar lineas vacías y/o en blanco del output, de la siguiente manera:
Código [Seleccionar]
For ... in (`sqlplus -s QA_DATAC/qa_dc@orcl_qa @%PATH_SQL%t1 ^| findstr "^[^\s]"`) Do (...)
Nota: Ten en cuenta que en el código que has mostrado estás utilizando el modificador UseBackQ en el For, y eso altera el comportamiento de las comillas dobles, no manejo sqlplus, pero creo que no necesites usarlo.
Además de eso, estás dejando un espacio en blanco a la derecha del operador de asignación (Set valor= %%i)), corrígelo, utiliza la sintaxis correcta: Set "valor=%%~i".
Saludos