hisdudeness
Goto Top

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

Content-ID: 90488

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

Ausgedruckt am: 22.11.2024 um 20:11 Uhr

Biber
Biber 24.06.2008 um 09:12:43 Uhr
Goto Top
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
HisDudeness
HisDudeness 25.06.2008 um 07:33:43 Uhr
Goto Top
Hi Biber,

danke für die schnelle Antwort !

Ich habe beide Varianten ausprobiert, leider erfolglos...
Leerzeichen im Namen macht er nicht. Setze ich bei der Eingabewe den Namen in "", dann macht er zwei Verzeichnissbäume einen mit dem ersten Namenteil und einen mit dem zweiten Namenteil.

Gibt es andere Möglichkeiten einen Namen einzulesen - ich dachte an Readline, habe aber keine Namen in Dateiform...
Oder muss ich eine Flagge irgendwo ein/ausschalten ???

Ich wäre mit der vorhanden Variante voll zufrieden wenn man einen Namen wie Hans Wurst eingeben könnte.

Gruß und vielen Dank

His Dudeness
Biber
Biber 25.06.2008 um 08:42:24 Uhr
Goto Top
Moin HisDudeness,

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
HisDudeness
HisDudeness 26.06.2008 um 07:39:30 Uhr
Goto Top
Guten Morgen Biber,

das verstehe ich nun mal garnicht... ich habe die "" nun schon nahezu "überall" positioniert - immer das gleiche Ergebniss:

@echo off

TITLE generating a customer projekt tree

VERIFY ON

:: enter customers name (Kundenname)

Set /p Kundenname=Bitte geben Sie den Kundennamen ein:

:: enter project no. (Projektnummer)

SET /p ProjectNumber=Bitte geben Sie die Projektnummer ein:

:: enter order no. (Auftragsnummer)

SET /p OrderNumber=Bitte geben Sie die Auftragnummer ein:

:: generating tree structure

mkdir "%Kundenname%\%ProjectNumber%\%OrderNumber%\Zeichnungen"
mkdir "%Kundenname%\%ProjectNumber%\%OrderNumber%\Zeichnungen\Kundenplaene" "%Kundenname%\%ProjectNumber%\%OrderNumber%\Zeichnungen\Installationsplaene" "%Kundenname%\%ProjectNumber%\%OrderNumber%\Zeichnungen\Schaltplaene"

Also quasi wie im ersten Post...

Dieses liefert:
Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenbträgerbezeichnung ist falsch.
Folgender Fehler trat auf: level one\level two\level three\Software\Geraetesoftware

Die Ordner angelegt hat er selbstverständlich nicht ...
Ist irgendeine Grundeinstellung falsch eventuell ? O.Ä. ?
Kann es beim besten Willen auch nicht verstehen...

Gruß und Danke
Biber
Biber 26.06.2008 um 09:55:36 Uhr
Goto Top
Moin HisDudeness,

hast Du auch für jede MKDIR-Anweisung eine eigene Zeile und legst Du mit jedem MKDIR-Kommando genau ein Verzeichnis an?

So ist es nämlich vorgesehen...

Grüße
Biber
HisDudeness
HisDudeness 30.06.2008 um 07:28:38 Uhr
Goto Top
Hi Biber,

MKDIR wird einmal pro neuem Verzeichnis ausgeführt. Ich hatte es zu erst so geschrieben, dass er mehrere Verzeichnisse mit einer MKDIR Anweisung erstellt. Habe das allerdings verworfen im Rahmen des debuggen des Scripts...

Werde nocheinmal in aller Ruhe drüber schauen face-big-smile
Gruß & Danke

HisDudeness