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