
Estoy trabajando con la plataforma Informatica que solo me permite utilizar archivos por lotes. Actualmente estoy produciendo una lista de nombres de archivos con el comando
dir /b /a-d
850_B_4545703_.txt
850_B_003029660_.txt
850_B_069029548_.txt
850_B_188789_.txt
850_C_ENT_1712865_.txt
850_C_ENT_1712871_.txt
850_C_1712877_.txt
Pero para que Informatica use esta lista para localizar archivos, tengo que agregar la ruta utilizada en la conexión del archivo plano, que es
\\jdeappp03\EDI\
Entonces, lo que estoy tratando de lograr es un archivo por lotes que generará lo siguiente:
\\jdeappp03\EDI\850_B_4545703_.txt
\\jdeappp03\EDI\850_B_003029660_.txt
\\jdeappp03\EDI\850_B_069029548_.txt
\\jdeappp03\EDI\850_B_188789_.txt
\\jdeappp03\EDI\850_C_ENT_1712865_.txt
\\jdeappp03\EDI\850_C_ENT_1712871_.txt
\\jdeappp03\EDI\850_C_1712877_.txt
Intenté usarlo dir /s/b *.txt
, pero esto proporciona la ruta absoluta que mi configuración de Informatica no puede usar para encontrar los archivos.
¿Hay alguna manera de obtener el resultado deseado con un archivo por lotes?
Respuesta1
Podrías usar el siguiente comando en un archivo por lotes:
for /f "delims=" %%a in ('dir /b /a-d <PATH>') do (echo \\jdeappp03\EDI\%%a)
El uso de un bucle for alrededor del comando le permite iterar a través de su salida y guardarla en la variable %%a
. Todo lo que quieras hacer durante esa iteración viene después do
.
Solo necesita paréntesis después do
si desea utilizar saltos de línea para facilitar la lectura.
Úselo for /?
en el cmd de Windows para obtener más información sobre el for
comando.
Respuesta2
Una opción más corta sería:
for %%i in ("D:\Path\*.txt")do echo \\jdeappp03\EDI\%%~nxi