Mittels Batch Unterordner erstellen?
Ich muss immer wieder Standard Ordner anlegen die ich gern automatisiert haben will. Meine Struktur sieht immer gleich aus:
Ordner xyz: Musik, Videos, AE, SFX, 3D, Bilder, Premiere
Ordner xyz\Videos: Sony, Drohne, Action
Wobei "Ordner xyz" symbolisch für ein aktuelles Projekt dient, also immer anderer Name
Nun hab ich mir überlegt, das ganze in eine Art batch Datei automatisieren zu lassen. Also der geöffnete Ordner soll nach dem Ausführen der Bacth gefüllt werden.
Leider habe ich überhaupt keine Ahnung.
Mit Hilfe des Interents hbe ich folrgenden Code gebastelt:
<Code>
@echo off
md "3D"
md "AE
...
md "Videos\Sony"
md "Videos\Drone"
...
</Code>
Doch leider klappt das so garnicht. Zumindest passiert nichts, wenn ich die Datei starte. Hat jemand einen Tipp?
2 Antworten
set /p Projekt=""
mkdir %Projekt%
mkdir %Projekt%/3D
...
In batch bin ich alles andere als fit, aber so sollte es gehen glaube ich. Ansonsten die von mir genannten Zeilen googlen zum Bug fixen, sollte dort ein Fehler sein.
Projekt soll hier ein User input sein, mit dem Projektnamen
dein Code ist soweit in Ordnung und erzeugt die jeweiligen Ordner im Batchverzeichnis.
etwas eleganter läuft die Sache mit einer Schleife:
demo.cmd
@echo off
for %%a in ("3D","AE","Videos\Sony","Videos\Drone") do (
md "%%~a"
)
pause
allerdings wäre es Blödsinn die Batch jeweils in eine Ordner zu kopieren. Darum einfach den Ordnernamen abfragen:
@echo off
chcp 65001 >nul
rem default setzen falls nur [Enter] gedrückt wird, sonst landet der Kladderatatsch im Bassisverzeichniss (c:\)
set "BaseFolder=Nix"
set /p "BaseFolder=Enter BaseFoldername :"
md "%BaseFolder%\3D"
md "%BaseFolder%\AE"
md "%BaseFolder%\Videos\Sony"
md "%BaseFolder%\Videos\Drone"
pause
altenativ etwas eleganter:
demo3.cmd
@echo off
chcp 65001 >nul
set "BaseFolder=Nix"
set /p "BaseFolder=Enter BaseFoldername :"
for %%a in ("3D" , "AE","Videos\Sony","Videos\Drone") do (
md "%BaseFolder%\%%~a"
)
pause
Die Eleganteste Form einer Batch ist die Verwendung als Droptarget. Da heist, man zieht einfach eine Datei/Ordner auf die Batch:
droptarget.cmd
@echo off
chcp 65001 >nul
rem wurde ein Ordner auf die Batch gezogen?
if "%~1"=="" (
echo Ziehe den Ordner, in welchem die Ordnerstruktur erzeugt werden soll,
echo auf die Batch: "%~nx0"
timeout 5 >nul
exit /b
)
rem ist das wirklich ein Ordner?
if not exist "%~1\" (
echo "%~1" ist kein Ordner
timeout 5 >nul
exit /b
)
set "BaseFolder=%~1"
for %%a in ("3D" , "AE","Videos\Sony","Videos\Drone") do (
md "%BaseFolder%\%%~a"
)
pause
Ok, das sieht schon sher nach Pro aus. Ich check garnichts mehr :) Trotzdem vielen, vielen Dank für den Code
Batch war noch nie eine bequeme Sprache...
Ich glaube Dir gern, dass die Beispiele Dich überfordern, ...aber so sehen nunmal voll automatisierte Lösungen aus. Unabhängig von der verwendeten Sprache ist genau Dies der Grund, weshalb Programmierer einigermaßen gut bezahlt🤑 werden (sofern sie das nicht als Hobby ansehen😇).
PS: Du kannst solche Loops auch verschachteln:
@echo off
chcp 65001 >nul
for %%f in ("Affe","Huhn","Ente","Höllenhund") do (
for %%a in ("3D" , "AE","Videos\Sony","Videos\Drone") do (
md "%%~f\%%~a"
)
)
pause
Danke für den Tipp. Aber kann man nicht irgendwie auf %Projekt% verzichten? Denn sonst müsste ich die batch ja jedesmal umschreiben, wenn ich ein neues Projekt starte (ja, ich weiß, ich jann auch Suchen und Ersetzen, geht aber ums Prinzip :))