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.bat
archivo 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.