ディレクトリの内容のパスをバッチファイルの引数として渡す

ディレクトリの内容のパスをバッチファイルの引数として渡す

複数のファイルをドラッグするバッチ ファイル ("drag_target.bat") があります。Windows はドラッグされたファイルのパスを引数として渡します。

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

私が実行しなければならない一般的なタスクは、特定のフォルダー (「c:\foo\bar」と呼びます) のすべての内容を drag_target.bat にドラッグすることです。

最初のバッチ ファイルを別のバッチ ファイル ("double_clickable.bat") にラップして、このタスクを自動化したいと思います。しかし、特定のフォルダーのすべての内容を引数としてリストするにはどうすればよいでしょうか?

たとえば、「c:\foo\bar」に次の内容が含まれているとします。

.txt ファイル

b.avi

c [サブフォルダです]

double_clickable.bat で以下を呼び出すようにします。

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

これを実現するための最善の方法は何でしょうか?

答え1

このdouble_clickable.batファイルは次のことを行う必要があります:

@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!

使用するには、任意のフォルダーをこのバッチ ファイルにドラッグします。

関連情報