Pase rutas de contenido del directorio como argumentos al archivo por lotes

Pase rutas de contenido del directorio como argumentos al archivo por lotes

Tengo un archivo por lotes ("drag_target.bat") al que arrastro varios archivos. Luego, Windows pasa las rutas de los archivos arrastrados como argumentos:

drag_target.bat "dragged file 1 path" "dragged file 2 path" ...

Una tarea común que tengo que realizar es arrastrar todo el contenido de una carpeta en particular (llámela "c:\foo\bar") a drag_target.bat.

Me gustaría automatizar esta tarea envolviendo el primer archivo por lotes en otro archivo por lotes ("double_clickable.bat"). Pero, ¿cómo puedo enumerar todos los contenidos de una carpeta en particular como argumentos?

Entonces, por ejemplo, si "c:\foo\bar" contuviera lo siguiente:

a.txt

b.avi

c [es una subcarpeta]

entonces me gustaría que double_clickable.bat invocara lo siguiente:

drag_target.bat "c:\foo\bar\a.txt" "c:\foo\bar\b.avi" "c:\foo\bar\c"

Cuál es la mejor manera de lograr esto?

Respuesta1

Este double_clickable.batarchivo debería hacer eso:

@echo off
setlocal enabledelayedexpansion
set "args="
set "folder=%1"
for /f "tokens=*" %%G in ('dir /b "%1"') do set args=!args! "%folder%\%%G"
drag_target.bat !args!

Para usarlo, arrastre cualquier carpeta a este archivo por lotes.

información relacionada