Usereingabe in Batchjob mit Sonderzeichen
Batch Job, Usereingabe, Leerzeichen, Verzeichnis erstellen
Hallo Alle´,
ich habe ein kleines Problem mit der Usereingabe im folgenden Batchjob...
Es funktioniert alles so wie es soll - der User macht seine Eingaben die Verzeichnisstruktur wird erstellt...
Dumm ist allerdings wenn der User eine Eingabe mit Sonderzeichen macht, im speziellen mit einem Leerzeichen im Namen
z.B: Kundenname Loddar Mathäus
Wie kann ich Ihm sagen, dass er auch Leerzeichen lesen soll und diese dann in der Pfaderstellung auch verwendet ???
Ich weiss, dass man bei Variablen mit Leerzeichen "" verwenden muss, wie realisiere ich das bei der Eingabe des Users ?
Gruß Vielen Dank und Frohes Schaffen !!!
@echo off
TITLE generating a customer projekt tree
VERIFY ON
:: enter customers name (Kundenname)
Set /p Kundenname=Bitte geben Sie den Kundennamen ein:
echo.
:: enter project no. (Projektnummer)
SET /p ProjectNumber=Bitte geben Sie die Projektnummer ein:
echo.
:: enter order no. (Auftragsnummer)
SET /p OrderNumber=Bitte geben Sie die Auftragnummer ein:
echo.
:: generating tree structure
mkdir %Kundenname%\%ProjectNumber%\%OrderNumber%\Zeichnungen
mkdir %Kundenname%\%ProjectNumber%\%OrderNumber%\Zeichnungen\Kundenplaene %Kundenname%\%ProjectNumber%\%OrderNumber%\Zeichnungen\Installationsplaene %Kundenname%\%ProjectNumber%\%OrderNumber%\Zeichnungen\Schaltplaene
mkdir %Kundenname%\%ProjectNumber%\%OrderNumber%\Software
mkdir %Kundenname%\%ProjectNumber%\%OrderNumber%\Software\Geraetesoftware %Kundenname%\%ProjectNumber%\%OrderNumber%\Software\Setups %Kundenname%\%ProjectNumber%\%OrderNumber%\Software\Zusatzsoftware
mkdir %Kundenname%\%ProjectNumber%\%OrderNumber%\Dokumente
mkdir %Kundenname%\%ProjectNumber%\%OrderNumber%\Dokumente\Korrespondenz %Kundenname%\%ProjectNumber%\%OrderNumber%\Dokumente\Funktionsbeschreibung %Kundenname%\%ProjectNumber%\%OrderNumber%\Dokumente\Spezifikation %Kundenname%\%ProjectNumber%\%OrderNumber%\Dokumente\Fremddokumente %Kundenname%\%ProjectNumber%\%OrderNumber%\Dokumente\Projektdokumentation
mkdir %Kundenname%\%ProjectNumber%\%OrderNumber%\Zusatzinformationen
mkdir %Kundenname%\%ProjectNumber%\%OrderNumber%\Zusatzinformationen\Bilder
Hallo Alle´,
ich habe ein kleines Problem mit der Usereingabe im folgenden Batchjob...
Es funktioniert alles so wie es soll - der User macht seine Eingaben die Verzeichnisstruktur wird erstellt...
Dumm ist allerdings wenn der User eine Eingabe mit Sonderzeichen macht, im speziellen mit einem Leerzeichen im Namen
z.B: Kundenname Loddar Mathäus
Wie kann ich Ihm sagen, dass er auch Leerzeichen lesen soll und diese dann in der Pfaderstellung auch verwendet ???
Ich weiss, dass man bei Variablen mit Leerzeichen "" verwenden muss, wie realisiere ich das bei der Eingabe des Users ?
Gruß Vielen Dank und Frohes Schaffen !!!
@echo off
TITLE generating a customer projekt tree
VERIFY ON
:: enter customers name (Kundenname)
Set /p Kundenname=Bitte geben Sie den Kundennamen ein:
echo.
:: enter project no. (Projektnummer)
SET /p ProjectNumber=Bitte geben Sie die Projektnummer ein:
echo.
:: enter order no. (Auftragsnummer)
SET /p OrderNumber=Bitte geben Sie die Auftragnummer ein:
echo.
:: generating tree structure
mkdir %Kundenname%\%ProjectNumber%\%OrderNumber%\Zeichnungen
mkdir %Kundenname%\%ProjectNumber%\%OrderNumber%\Zeichnungen\Kundenplaene %Kundenname%\%ProjectNumber%\%OrderNumber%\Zeichnungen\Installationsplaene %Kundenname%\%ProjectNumber%\%OrderNumber%\Zeichnungen\Schaltplaene
mkdir %Kundenname%\%ProjectNumber%\%OrderNumber%\Software
mkdir %Kundenname%\%ProjectNumber%\%OrderNumber%\Software\Geraetesoftware %Kundenname%\%ProjectNumber%\%OrderNumber%\Software\Setups %Kundenname%\%ProjectNumber%\%OrderNumber%\Software\Zusatzsoftware
mkdir %Kundenname%\%ProjectNumber%\%OrderNumber%\Dokumente
mkdir %Kundenname%\%ProjectNumber%\%OrderNumber%\Dokumente\Korrespondenz %Kundenname%\%ProjectNumber%\%OrderNumber%\Dokumente\Funktionsbeschreibung %Kundenname%\%ProjectNumber%\%OrderNumber%\Dokumente\Spezifikation %Kundenname%\%ProjectNumber%\%OrderNumber%\Dokumente\Fremddokumente %Kundenname%\%ProjectNumber%\%OrderNumber%\Dokumente\Projektdokumentation
mkdir %Kundenname%\%ProjectNumber%\%OrderNumber%\Zusatzinformationen
mkdir %Kundenname%\%ProjectNumber%\%OrderNumber%\Zusatzinformationen\Bilder
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 90488
Url: https://administrator.de/contentid/90488
Ausgedruckt am: 22.11.2024 um 20:11 Uhr
6 Kommentare
Neuester Kommentar
Moin HisDudeness,
setze einfach das ganze MKDIR-Argument in Hochkomma.
Beispiel:
mkdir "%Kundenname%\%ProjectNumber%\%OrderNumber%\Software"
eigentlich ist M$ bei Pfadangaben sehr tolerant bzgl. vorhandener Anführungszeiechen - Du könntest auch jeden/ein paar Einzel-Pfade einzeln in Anfü-zeichen schreiben:
mkdir "%Kundenname%"\%ProjectNumber%\"%OrderNumber%"\Software
(was es natürlich nicht wartbarer macht.)
Die erste Variante sollte also völlig reichen.
Grüße
Biber
setze einfach das ganze MKDIR-Argument in Hochkomma.
Beispiel:
mkdir "%Kundenname%\%ProjectNumber%\%OrderNumber%\Software"
eigentlich ist M$ bei Pfadangaben sehr tolerant bzgl. vorhandener Anführungszeiechen - Du könntest auch jeden/ein paar Einzel-Pfade einzeln in Anfü-zeichen schreiben:
mkdir "%Kundenname%"\%ProjectNumber%\"%OrderNumber%"\Software
(was es natürlich nicht wartbarer macht.)
Die erste Variante sollte also völlig reichen.
Grüße
Biber
Moin HisDudeness,
sorry, kann ich nicht nachvollziehen.
-> sind beide angegebenen Varianten.
Grüße
Biber
sorry, kann ich nicht nachvollziehen.
>set /p a=teil1:
teil1:level one
>set /p b=teil2:
teil2:level two
>set /p c=teil3:
teil3:level three
>mkdir "%a%\%b%\%c%"
>dir "%a%\%b%\%c%"
Datenträger in Laufwerk D: ist AllesQuark
Verzeichnis von D:\temp\level one\level two\level three
25.06.08 08:36 <DIR> .
25.06.08 08:36 <DIR> ..
0 Datei(en) 0 Bytes
2 Verzeichnis(se), xxx Bytes frei
>rd "%a%\%b%\%c%"
>mkdir "%a%"\"%b%"\"%c%"
>dir "%a%\%b%\%c%"
Datenträger in Laufwerk D: ist AllesQuark
Verzeichnis von D:\temp\level one\level two\level three
25.06.08 08:40 <DIR> .
25.06.08 08:40 <DIR> ..
0 Datei(en) 0 Bytes
-> sind beide angegebenen Varianten.
Grüße
Biber