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

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

Frage Entwicklung Batch & Shell

Mitglied: Cottonwood

Cottonwood (Level 1) - Jetzt verbinden

10.09.2014, aktualisiert 00:32 Uhr, 1185 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...