Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Usereingabe in Batchjob mit Sonderzeichen

Frage Entwicklung Batch & Shell

Mitglied: HisDudeness

HisDudeness (Level 1) - Jetzt verbinden

24.06.2008, aktualisiert 30.06.2008, 5540 Aufrufe, 6 Kommentare

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
Mitglied: Biber
24.06.2008 um 09:12 Uhr
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
Bitte warten ..
Mitglied: HisDudeness
25.06.2008 um 07:33 Uhr
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
Bitte warten ..
Mitglied: Biber
25.06.2008 um 08:42 Uhr
Moin HisDudeness,

sorry, kann ich nicht nachvollziehen.
01.
>set /p a=teil1: 
02.
teil1:level one 
03.
>set /p b=teil2: 
04.
teil2:level two 
05.
 
06.
>set /p c=teil3: 
07.
teil3:level three 
08.
 
09.
>mkdir "%a%\%b%\%c%" 
10.
>dir "%a%\%b%\%c%" 
11.
 Datenträger in Laufwerk D: ist AllesQuark 
12.
 Verzeichnis von D:\temp\level one\level two\level three 
13.
 
14.
25.06.08  08:36    <DIR>          . 
15.
25.06.08  08:36    <DIR>          .. 
16.
               0 Datei(en)              0 Bytes 
17.
               2 Verzeichnis(se), xxx Bytes frei 
18.
>rd "%a%\%b%\%c%" 
19.
 
20.
>mkdir "%a%"\"%b%"\"%c%" 
21.
 
22.
>dir "%a%\%b%\%c%" 
23.
 Datenträger in Laufwerk D: ist AllesQuark 
24.
 
25.
 Verzeichnis von D:\temp\level one\level two\level three 
26.
 
27.
25.06.08  08:40    <DIR>          . 
28.
25.06.08  08:40    <DIR>          .. 
29.
               0 Datei(en)              0 Bytes
-> sind beide angegebenen Varianten.

Grüße
Biber
Bitte warten ..
Mitglied: HisDudeness
26.06.2008 um 07:39 Uhr
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
Bitte warten ..
Mitglied: Biber
26.06.2008 um 09:55 Uhr
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
Bitte warten ..
Mitglied: HisDudeness
30.06.2008 um 07:28 Uhr
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
Gruß & Danke

HisDudeness
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...