Übergeben Sie die Pfade der Verzeichnisinhalte als Argumente an die Batchdatei

Übergeben Sie die Pfade der Verzeichnisinhalte als Argumente an die Batchdatei

Ich habe eine Batchdatei („drag_target.bat“), auf die ich mehrere Dateien ziehe. Windows übergibt dann die gezogenen Dateipfade als Argumente:

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

Eine häufige Aufgabe, die ich ausführen muss, besteht darin, den gesamten Inhalt eines bestimmten Ordners (nennen wir ihn „c:\foo\bar“) auf drag_target.bat zu ziehen.

Ich möchte diese Aufgabe automatisieren, indem ich die erste Batchdatei in eine weitere Batchdatei („double_clickable.bat“) einbinde. Aber wie kann ich den gesamten Inhalt eines bestimmten Ordners als Argumente auflisten?

Wenn beispielsweise „c:\foo\bar“ Folgendes enthielte:

eine.txt

b.avi

c [ist ein Unterordner]

dann möchte ich, dass double_clickable.bat Folgendes aufruft:

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

Wie lässt sich dies am besten erreichen?

Antwort1

Diese double_clickable.batDatei sollte das tun:

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

Ziehen Sie zur Verwendung einen beliebigen Ordner in diese Batchdatei.

verwandte Informationen