Necesita un archivo por lotes de Windows que agregue una cadena a cada línea de un comando dir para producir una lista de archivos

Necesita un archivo por lotes de Windows que agregue una cadena a cada línea de un comando dir para producir una lista de archivos

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 dosi 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 forcomando.

Respuesta2

Una opción más corta sería:

for %%i in ("D:\Path\*.txt")do echo \\jdeappp03\EDI\%%~nxi

información relacionada