sigisigi
Goto Top

Batch Variablen Inhalt als Ordner Namen verwenden und Unterordner erstellen

Hallo Zusammen

Ich mache mich gerade mit Batch vertraut und stosse immer wieder auf hindernisse. Die meisten kann ich mit der Zeit lösen aber bei diesem Problem gelingt es mir nicht. Ich habe als Übung ein Skript erstellt, dass den Namen erfragt und mit diesem dann einen Ordner erstellt. usw.

Info zum System
Win7
64Bit
Software Notepad++

Das ganze Programm ist momentan auf 3 Batch files aufgeteilt.

1:
@echo off
echo Batch Übung
echo Schreibe deinen Namen
set/p Name=
echo Hallo %Name%
:Frage1
echo Soll ein Persöndlicher Ordner für dich erstellt werden?
echo Ja , Nein
set/p Antwort1=
if %Antwort1%== Ja goto JA1
if %Antwort1%== Nein goto NEIN1
echo.

echo Nur Ja oder Nein eingeben
echo.
goto Frage1

:JA1
if exist C:\Users\adsi\Desktop\Lernprogramm\%Name% call Loeschen.bat
mkdir C:\Users\adsi\Desktop\Lernprogramm\%Name%
echo Persöndlicher Ordner wurde erstellt.
pause>NUL

:NEIN1
goto Frage2
echo.

cls

:Frage2

Weiterleitung auf 2 Batch
2:
@echo off
echo Wollen Sie den vorhandenen Ordner löschen?
echo Ja , Nein
set/p Antwort=
if %Antwort%== Ja goto löschen
if %Antwort%== Nein goto NeuerOrdner1

:NeuerOrdner1
echo Ordner bleibt vorhanden.
echo Stattdessen neuen Ordner erstellen?
echo Ja , Nein
set/p Antwort1=
if %Antwort1%== Ja goto NeuerOrdner
if %Antwort1%== Nein goto Schluss

:löschen
rmdir /s /q C:\Users\adsi\Desktop\Lernprogramm\%Name%
echo Ordner gelöscht
pause>NUL

:NeuerOrdner
echo Wie soll der neue Ordner gennant werden?
set/p Name1=
echo Es wird ein Ordner mit der Bezeichnung %Name1% erstellt
mkdir C:\Users\adsi\Desktop\Lernprogramm\%Name1%
pause>NUL

:Schluss
call Ende.bat

Weiterleitung auf 3te Batch
3:
@echo off

cd C:\User\adsi\Desktop\Lernprogramm\%Name%
if exist Kommentar rmdir Kommentar
mkdir Kommentar

:Kommentar
echo Wollen Sie einen Kommentar schreiben?
echo Ja , Nein
set/p Kommentar=
if %Kommentar%==Ja goto Kommentar1
if %Kommentar%==Nein goto Schluss


echo Nur mit Ja oder Nein Antworten
echo.
goto Kommentar

:Kommentar1
cd C:\User\adsi\Desktop\Lernprogramm\%Name%\Kommentar
echo Schreiben Sie einen Kommentar
set/p Kommentar1=
echo %Kommentar1% > %Name%_Kommentar.txt
echo Vielen Dank für deinen Kommentar!
goto Schluss


:Schluss
echo Das Programm ist beendet
echo Vielen Dank %Name%!
pause
exit

Mein Ziel ist es nun, dass der Inhalt der Variabel %Name% als Ordner genutzt wird und dann anschliessend in diesem Ordner ein Ordner Kommentar entsteht welcher ein Textfile beinhalten mit dem Kommentar des Erstellers.

Ich Danke euch im Voraus für eure Hilfe
sigi

Content-ID: 237245

Url: https://administrator.de/contentid/237245

Ausgedruckt am: 22.11.2024 um 13:11 Uhr

SaschaRD
SaschaRD 06.05.2014 aktualisiert um 10:33:56 Uhr
Goto Top
Hallo Sigi,

Anmerkung: Du könntest alles in eine Batch verschachteln. Bei den ganzen Sprungzielen sollte es kein Problem sein. Hier dein Code etwas geändert:
@echo off
:: Meine Sets
set PATH="C:\Users\adsi\Desktop\Lernprogramm"  
echo Gib mir den Ordnernamen
set/p Name=
echo Ordnername: %Name%
:Frage1
echo Soll der Ordner erstellt werden?
echo Ja(J) , Nein(N)
set /p Antwort1=
	IF %Antwort1%== J goto JA1
	IF %Antwort1%== N goto Frage2
	echo.
	echo Nur Ja(J) oder Nein(N) eingeben
	echo.
	goto Frage1

:JA1
IF EXIST %PATH%\%Name% goto Frage2
md %PATH%\%Name%\
echo Persoenlicher Ordner %Name% wurde erstellt.
goto Kommentar

::Frage2 = NEIN1
:Frage2
echo Es exisitiert bereits ein Ordner mit der Bezeichnung: %Name%
echo Vorhandenen Ordner loeschen?
echo Ja(J) , Nein(N)
set/p Antwort2=
	IF %Antwort2%== J goto loeschen
	IF %Antwort2%== N goto NeuerOrdner1

:loeschen
rmdir /s /q %PATH%\%Name%
echo Ordner %Name% wurde geloescht.
goto JA1
	
:NeuerOrdner1
echo Ordner bleibt vorhanden.
echo Stattdessen neuen Ordner erstellen?
echo Ja(J) , Nein(N)
set/p Antwort3=
	IF %Antwort3%== J goto NeuerOrdner
	IF %Antwort3%== N goto Schluss

:NeuerOrdner
echo Name des Ordners?
set/p Name=
echo Es wird ein Ordner mit der Bezeichnung %Name% erstellt.
md %PATH%\%Name%
echo Persoenlicher Ordner %Name% wurde erstellt.
goto Kommentar

:Kommentar
echo Wollen Sie einen Kommentar schreiben?
echo Ja(J) , Nein(N)
set/p Kommentar=
	IF %Kommentar%==J goto Kommentar1
	IF %Kommentar%==N goto Schluss
	echo.
	echo Nur Ja(J) oder Nein(N) eingeben
	echo.
	goto Kommentar

:Kommentar1
echo Schreiben Sie einen Kommentar
set/p Kommentar1=
echo %Kommentar1% > %PATH%\%Name%\Kommentar.txt
echo Vielen Dank für deinen Kommentar!
goto Schluss

:Schluss
echo Das Programm ist beendet
echo Vielen Dank %Name%!
Gruß Sascha
bastla
bastla 06.05.2014 aktualisiert um 16:29:50 Uhr
Goto Top
Hallo sigisigi und SaschaRD!

Nur einige Anmerkungen:
  • Eine Variable für den (Basis-)Pfad zu verwenden ist eine sehr gute Idee - sie PATH zu nennen allenfalls dann, wenn sicher keine externen CMD-Befehle verwendet werden sollen ... face-wink
  • Falls der eingegebene Name ein Leerzeichen (oder Sonderzeichen wie etwa ein "&") enthalten sollte, wird sich das Fehlen der Anführungszeichen (um den jeweilgen Ordner-/Dateipfad herum) bemerkbar machen.
  • Ein if /i gäbe dem Benutzer die Möglichkeit, auch "j" (anstatt "J") einzugeben.
  • Bei der ersten Eingabe wird noch geprüft, ob der Ordner schon existiert - in :NeuerOrdner interessiert das nicht mehr ...
  • Falls der Benutzer keine Lust hatte, einen Kommentar einzugeben, lässt sich das (derzeit) nur am Inhalt ECHO ist eingeschaltet (ON). in "Kommentar.txt" erkennen - mit if defined könnte schon die Eingabe geprüft werden.

Grüße
bastla