Top-Themen

Aktuelle Themen (A bis Z)

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

Frage Entwicklung Batch & Shell

Wie wechsle ich zu einem Verzeichnis, das ein ! enthält?

Mitglied: Cottonwood

Cottonwood (Level 1) - Jetzt verbinden

10.09.2014, aktualisiert 00:32 Uhr, 1245 Aufrufe, 15 Kommentare, 1 Danke

01.
c: 
02.
set "folder=d:\Anwendungsdaten\Fritz!\Faxeingang" 
03.
rem setlocal enabledelayedexpansion 
04.
set "drive=!folder:~0,2!" 
05.
%drive% 
06.
rem endlocal enabledelayedexpansion 
07.
set path="!folder:~2!" 
08.
setlocal enabledelayedexpansion 
09.
cd %path% 
10.
11.
set drive 
12.
set path 
13.
set folder 
14.
pause
Das c: in der 1. Zeile dient nur dazu, dass das aktuelle Laufwerk nicht dem Ziellaufwerk entspricht.

Ich möchte folgende Befehle ausführen:

01.
d: 
02.
cd \Anwendungsdaten\Fritz!\Faxeingang
Aber wie ich auch immer mit setlocal und endlocal umgehe, es klappt nicht. Entweder geht die 1. oder die 2. Zeile. Aber nie beide.

Was mache ich falsch?
Mitglied: DonMatze
10.09.2014 um 03:04 Uhr
Moin,

bekommst du eine Fehlermeldung, o.ä.?


Viele Grüße
Matze
Bitte warten ..
Mitglied: certifiedit.net
10.09.2014 um 06:27 Uhr
Wenn du in der Kommandoconsole bist, führe den Befehl "cd " (deinpfad) einfach aus, hier wird dir klar gezeigt, wie es auszusehen hat ;) (Hilfe zur Selbsthilfe)
Bitte warten ..
Mitglied: colinardo
10.09.2014, aktualisiert um 08:11 Uhr
Moin,
deine Zeilen lassen sich auf das hier reduzieren
01.
Set "folder=d:\Anwendungsdaten\Fritz!\Faxeingang" 
02.
cd /d "%folder%"
cd /d übernimmt automatisch das wechseln auf das andere Laufwerk.

Grüße Uwe

p.s. dein Fehler ist, das du die systemweit definierte Variable path verwendest (die bereits mit Pfaden gefüllt ist) und innerhalb von setlocal überschreibst. Nach einem endlocal wird diese wieder auf Ihren Ursprungswert zurückgesetzt !! Siehe dazu: http://ss64.com/nt/setlocal.html
Bitte warten ..
Mitglied: Cottonwood
10.09.2014, aktualisiert um 11:39 Uhr
@DonMatze:
Je nach Vorgehensweise bekomme ich auch eine Fehlermeldung.
Im günstigsten Fall wird das ! einfach ignoriert. Dadurch funktioniert natürlich der cd nicht.

Ich habe mal vier Beispiele gemacht. Die hänge ich aber der Übersicht halber als getrennte Antworten hinten an.
Bitte warten ..
Mitglied: Cottonwood
10.09.2014, aktualisiert um 12:38 Uhr
@certifiedit.net:
Die Syntax des Befehls ist nicht das Problem.
Bitte warten ..
Mitglied: Cottonwood
10.09.2014 um 11:37 Uhr
Danke für deinen konstruktiven Vorschlag. Damit sollte es gehen.

Ich möchte aber auch das Problem verstehen.
Bitte warten ..
Mitglied: colinardo
10.09.2014, aktualisiert um 11:49 Uhr
Zitat von Cottonwood:
Ich möchte aber auch das Problem verstehen.
ganz einfach, Ausrufezeichen (bzw. das was zwischen diesen steht) werden, wenn enabledelayedexpansion aktiviert ist im String ausgewertet. Das führt dazu das das Ausrufezeichen quasi aus dem Pfad entfernt wird, wenn du es mit set einer Variablen zuweist.

Btw. benötigst du nicht unbedingt "delayed expansion" um Teile eines Strings auszulesen:
01.
@echo off  
02.
set "folder=d:\Anwendungsdaten\Fritz!\Faxeingang"  
03.
set "drive=%folder:~0,2%" 
04.
set "pfad=%folder:~2%"
Bitte warten ..
Mitglied: Cottonwood
10.09.2014 um 12:21 Uhr
Hier fehlt das ! im Pfad (siehe ganz unten)


01.
cd\ 
02.
c: 
03.
setlocal enabledelayedexpansion 
04.
set "folder=d:\Anwendungsdaten\Fritz!\Faxeingang" 
05.
set "drive=!folder:~0,2!" 
06.
%drive% 
07.
set path="!folder:~2!" 
08.
cd %path% 
09.
10.
set drive 
11.
set path 
12.
set folder

01.
cd\ 
02.
 
03.
D:\>c: 
04.
 
05.
C:\>setlocal enabledelayedexpansion 
06.
 
07.
C:\>set "folder=d:\Anwendungsdaten\Fritz!\Faxeingang" 
08.
 
09.
C:\>set "drive=!folder:~0,2!" 
10.
 
11.
Hier fehlt das ! im Pfad 
12.
 
13.
 
14.
C:\>d: 
15.
 
16.
D:\>set path="!folder:~2!" 
17.
 
18.
D:\>cd "\Anwendungsdaten\Fritz\Faxeingang" 
19.
Das System kann den angegebenen Pfad nicht finden. 
20.
 
21.
D:\>set drive 
22.
drive=d: 
23.
 
24.
D:\>set path 
25.
Path="\Anwendungsdaten\Fritz\Faxeingang" 
26.
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC 
27.
 
28.
D:\>set folder 
29.
folder=d:\Anwendungsdaten\Fritz\Faxeingang
Bitte warten ..
Mitglied: Cottonwood
10.09.2014 um 12:28 Uhr
Hier wird das Laufwerk nicht richtig zugewiesen


01.
c: 
02.
set "folder=d:\Anwendungsdaten\Fritz!\Faxeingang" 
03.
set "drive=!folder:~0,2!" 
04.
%drive% 
05.
set path="!folder:~2!" 
06.
cd %path% 
07.
08.
set drive 
09.
set path 
10.
set folder

01.
c: 
02.
 
03.
C:\>set "folder=d:\Anwendungsdaten\Fritz!\Faxeingang" 
04.
 
05.
C:\>set "drive=!folder:~0,2!" 
06.
 
07.
C:\>!folder:~0,2! 
08.
Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung 
09.
ist falsch. 
10.
 
11.
C:\>set path="!folder:~2!" 
12.
 
13.
C:\>cd "!folder:~2!" 
14.
Das System kann den angegebenen Pfad nicht finden. 
15.
 
16.
C:\>set drive 
17.
drive=!folder:~0,2! 
18.
 
19.
C:\>set path 
20.
Path="!folder:~2!" 
21.
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC 
22.
 
23.
C:\>set folder 
24.
folder=d:\Anwendungsdaten\Fritz!\Faxeingang
Bitte warten ..
Mitglied: Cottonwood
10.09.2014, aktualisiert um 12:31 Uhr
Hier wird im richtig abgetrennten Pfad beim cd das ! nicht berücksichtigt.


01.
cd\ 
02.
c: 
03.
set "folder=d:\Anwendungsdaten\Fritz!\Faxeingang" 
04.
setlocal enabledelayedexpansion 
05.
set "drive=!folder:~0,2!" 
06.
%drive% 
07.
set path="!folder:~2!" 
08.
cd %path% 
09.
10.
set drive 
11.
set path 
12.
set folder

01.
cd\ 
02.
 
03.
D:\>c: 
04.
 
05.
C:\>set "folder=d:\Anwendungsdaten\Fritz!\Faxeingang" 
06.
 
07.
C:\>setlocal enabledelayedexpansion 
08.
 
09.
C:\>set "drive=!folder:~0,2!" 
10.
 
11.
Hier wird im richtig abgetrennten Pfad beim cd das ! nicht berücksichtigt. 
12.
 
13.
 
14.
C:\>d: 
15.
 
16.
D:\>set path="!folder:~2!" 
17.
 
18.
D:\>cd "\Anwendungsdaten\Fritz!\Faxeingang" 
19.
Das System kann den angegebenen Pfad nicht finden. 
20.
 
21.
D:\>set drive 
22.
drive=d: 
23.
 
24.
D:\>set path 
25.
Path="\Anwendungsdaten\Fritz!\Faxeingang" 
26.
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC 
27.
 
28.
D:\>set folder 
29.
folder=d:\Anwendungsdaten\Fritz!\Faxeingang
Bitte warten ..
Mitglied: colinardo
10.09.2014, aktualisiert um 12:34 Uhr
habe ich doch oben schon geschrieben:
hier nochmal zum mitlesen ...
01.
@echo off 
02.
set "folder=d:\Anwendungsdaten\Fritz!\Faxeingang" 
03.
set "drive=%folder:~0,2%" 
04.
set "pfad=%folder:~2%" 
05.
echo %drive% 
06.
echo %pfad%
p.s. das lässt sich auch alles in einen Kommentar schreiben, anstatt dafür hier extra 3 Kommentare zu schreiben
Bitte warten ..
Mitglied: Cottonwood
10.09.2014 um 12:36 Uhr
Bei endlocal werden das Laufwerk und die Variable %drive% zurückgesetzt.


01.
set "drive=!folder:~0,2!" 
02.
%drive% 
03.
endlocal enabledelayedexpansion 
04.
set path="!folder:~2!" 
05.
setlocal enabledelayedexpansion 
06.
cd %path% 
07.
08.
set drive 
09.
set path 
10.
set folder

01.
cd\ 
02.
 
03.
D:\>c: 
04.
 
05.
C:\>set "folder=d:\Anwendungsdaten\Fritz!\Faxeingang" 
06.
 
07.
C:\>setlocal enabledelayedexpansion 
08.
 
09.
C:\>set "drive=!folder:~0,2!" 
10.
 
11.
C:\>d: 
12.
 
13.
D:\>endlocal enabledelayedexpansion 
14.
 
15.
C:\>set path="!folder:~2!" 
16.
 
17.
C:\>setlocal enabledelayedexpansion 
18.
 
19.
C:\>cd "!folder:~2!" 
20.
Das System kann den angegebenen Pfad nicht finden. 
21.
 
22.
C:\>set drive 
23.
Die Umgebungsvariable "drive" ist nicht definiert. 
24.
 
25.
C:\>set path 
26.
Path="!folder:~2!" 
27.
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC 
28.
 
29.
C:\>set folder 
30.
folder=d:\Anwendungsdaten\Fritz!\Faxeingang
Bitte warten ..
Mitglied: Cottonwood
10.09.2014 um 12:42 Uhr
Das entspricht meinem 2. Beispiel (hoffe ich). Das klappt auch nicht (sh. weiter unten).
Bitte warten ..
Mitglied: Cottonwood
10.09.2014 um 12:46 Uhr
Bei mir funktioniert das aber nicht (sh. Beispiel).
Bitte warten ..
Mitglied: colinardo
10.09.2014, aktualisiert um 12:50 Uhr
schau mal genau hin bitte ...ich verwende kein "delayed expansion" mit den Ausrufezeichen, sondern mit Prozentzeichen aus dem oben bereits erwähnten Grund !!
01.
set "drive=%folder:~0,2%" 
02.
set "pfad=%folder:~2%"
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Variable enthält nur den letzten Wert
gelöst Frage von Phill93Batch & Shell4 Kommentare

Hallo, bin hier gerade am verzweifeln. Ich möchte einen Variable auf das vorkommen eines bestimmten Strings prüfen. Das klapp ...

Basic
Excel VBA enthält
Frage von AngelsBasic

Guten Tag Ich bin ganz neu in diesem Forum und hätte eine Frage. Wie kann ich bei diesem bestehenden ...

Batch & Shell
Batch: Wenn Buchstaben im Wort enthalten dann......
gelöst Frage von Luckyman7471Batch & Shell7 Kommentare

Hallo Leute, Ich würde gerne folgendes realisieren: Wenn im lokalen Computernamen die Buchstaben "fa" enthalten sind dann soll ein ...

Windows Server
RDP - enthaltene Lizenzen.?!?
gelöst Frage von FA-jkaWindows Server5 Kommentare

Ich meine mal vor ein paar Jahren (Server 2008r2?) gelesen zu haben, dass bei einer Windows-Serverlizenz auch zwei Lizenzen ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 20 StundenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 1 TagTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 1 TagSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 1 TagSicherheit9 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Sicherheit
Meltdown und Spectre: Die machen uns alle was vor
Information von FrankSicherheit25 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

Netzwerke
Packet loss bei "InternetLeitungsvollauslastung"
gelöst Frage von Freak-On-SiliconNetzwerke17 Kommentare

Servus; Ja der Titel klingt komisch, is aber so. Wenn die Internetleitung voll ausgelastet ist, hab ich extreme packet ...

Ubuntu
Ubuntu - Starter für nicht vertrauenswürdige Anwendungen
Frage von adm2015Ubuntu17 Kommentare

Hallo zusammen, Ich verwende derzeit die Ubuntu Versionen 17.10 bzw. im Test 18.04. Ich habe mehrere .desktop Dateien in ...

Windows 10
Automatische daten kopieren, USB zu USB unter Win10 im Hintergrund
Frage von DerEisigeWindows 1016 Kommentare

Hallo Leute, ich bin auf der Suche nach einem Skript, dass von einem USB Stick automatisch nach dem einstecken ...