Passe caminhos do conteúdo do diretório como argumentos para o arquivo em lote

Passe caminhos do conteúdo do diretório como argumentos para o arquivo em lote

Eu tenho um arquivo em lote ("drag_target.bat") para o qual arrasto vários arquivos. O Windows então passa os caminhos dos arquivos arrastados como argumentos:

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

Uma tarefa comum que tenho que realizar é arrastar todo o conteúdo de uma pasta específica (chame-a de "c:\foo\bar") para drag_target.bat.

Gostaria de automatizar esta tarefa agrupando o primeiro arquivo em lote em outro arquivo em lote ("double_clickable.bat"). Mas como posso listar todo o conteúdo de uma pasta específica como argumentos?

Então, por exemplo, se "c:\foo\bar" contivesse o seguinte:

a.txt

b.avi

c [é uma subpasta]

então eu gostaria que double_clickable.bat invocasse o seguinte:

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

Qual é o melhor jeito de concluir isso?

Responder1

Este double_clickable.batarquivo deve fazer isso:

@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 usar, arraste qualquer pasta para este arquivo em lote.

informação relacionada