Mittels Batch Unterordner erstellen?

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

Sven8219 
Fragesteller
 05.09.2022, 17:45

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 :))

0
FaTech  05.09.2022, 17:46
@Sven8219

Ich sagte ja, dass es ein User input ist. Da öffnet sich die Konsole und du musst da den neuen Namen Eingeben. Nach enter drücken, geht es dann weiter

1
FaTech  05.09.2022, 17:52
@Sven8219

Sollte der User input nicht gehen, musst du nochmal googlen. Bin damit nicht 100% sicher. Ich glaube aber, dass es so funktionieren sollte...

0
Sven8219 
Fragesteller
 05.09.2022, 18:15
@FaTech

Also das mit der Eingabe hat geklappt und er legt mir auch den Ordner an, allerdings wars das dann, keine Unterordner

0
Sven8219 
Fragesteller
 05.09.2022, 18:18
@Sven8219

Fehler gefunden, Backslapsh anstelle von Slash. Aber ich kann keine Anmen mit Leerzeichen erstellen, sonst erstellt er mir für jedes Wort einen Ordner. Kann man das irgendwie umgehen?

0

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

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren
Erzesel  05.09.2022, 19:18

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
0
Sven8219 
Fragesteller
 05.09.2022, 21:16

Ok, das sieht schon sher nach Pro aus. Ich check garnichts mehr :) Trotzdem vielen, vielen Dank für den Code

0
Erzesel  06.09.2022, 13:00
@Sven8219

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😇).

1