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
GELÖST

Wie nach Anführungszeichen in einem string suchen, wenn enabledelayedexpansion benutzt wird?

Frage Entwicklung Batch & Shell

Mitglied: Highend01

Highend01 (Level 1) - Jetzt verbinden

31.08.2012, aktualisiert 15:51 Uhr, 3405 Aufrufe, 4 Kommentare

Hallo,

ich benötige in einem meiner Scripte (es konvertiert .reg Dateien in .bat Dateien) zwingend
"setlocal enableextensions enabledelayedexpansion"

Das "normale" escapen funktioniert hier für strings allerdings nicht und deshalb scheitert
dieses Demoscript:

01.
@echo off 
02.
setlocal enableextensions enabledelayedexpansion 
03.
 
04.
set dat="Lucida Console" 
05.
 
06.
if ^!dat:~0,1!==^" ( 
07.
  echo !dat! 
08.
) else ( 
09.
  echo Anfuehrungszeichen nicht gefunden 
10.
)

Als Gegenbeispiel: Benötigt man "setlocal enableextensions enabledelayedexpansion" nicht, kann
man ganz normal escapen und dieses script läuft deshalb auch korrekt:
01.
@echo off 
02.
 
03.
set dat="Lucida Console" 
04.
 
05.
if ^%dat:~0,1%==^" ( 
06.
  echo %dat% 
07.
) else ( 
08.
  echo Anfuehrungszeichen nicht gefunden 
09.
)
Wie / auf welche Art und Weise muss ich also im ersten script escapen, damit ich nach
wie vor nach dem Anführungszeichen suchen kann?

Danke im voraus,
Highend
Mitglied: pieh-ejdsch
31.08.2012 um 21:08 Uhr
moin Highend,

delayed Aufgelöst braucht nicht Escaped zu werden. Nur normal in Prozentzeichen muss.
setlocal enabledelayedexpansion 
set "A="" 
set "test="1" 
if ^" equ !A! echo ja 
if !test:0,1! equ !A! echo ja
Gruß Phil
Bitte warten ..
Mitglied: Highend01
31.08.2012 um 21:43 Uhr
Hi Phil,

bevor in deinem script die letzte Zeile ausgeführt werden würde, bekomme ich die folgende Meldung (das script wird über eine DOS-Box gestartet):

01.
"1!" kann syntaktisch an dieser Stelle nicht verarbeitet werden.
Kopiert aus der Eingabeaufforderung im Gesamtkontext also:
01.
D:\Users\Highend\Downloads>.test.bat 
02.
 
03.
D:\Users\Highend\Downloads>setlocal enabledelayedexpansion 
04.
 
05.
D:\Users\Highend\Downloads>set "A="" 
06.
 
07.
D:\Users\Highend\Downloads>set "test="1" 
08.
 
09.
D:\Users\Highend\Downloads>if " EQU !A! echo ja 
10.
ja 
11.
"1!" kann syntaktisch an dieser Stelle nicht verarbeitet werden. 
12.
 
13.
D:\Users\Highend\Downloads>if !test:0,1! equ !A! echo ja
Bitte warten ..
Mitglied: pieh-ejdsch
31.08.2012 um 23:12 Uhr
ups BlindKopie - BCC an ... mein Fehler. Richtig ist es Erweitert mit Tilde:
!test:~0,1!
Gruß Phil
Bitte warten ..
Mitglied: Highend01
01.09.2012 um 19:47 Uhr
Auch mit Tilde bekomme ich die gleiche Fehlermeldung

Aber mein eigentliches Problem hab ich mit Hilfe deines Tipps lösen können, von daher setze ich den Threadstatus neu.

Danke und Gruß,
Highend
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
Excel (2016): Enthaltenen Text suchen (2)

Frage von ralfkausk zum Thema Microsoft Office ...

Linux Netzwerk
Mit Raspberry Pi3 Netzwerk nach ein bestimmtes Gerät suchen?!? (3)

Frage von DaTobsn zum Thema Linux Netzwerk ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(29)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Windows Server

Exchange 2010 Active Directory und Windows Server 2016

(4)

Erfahrungsbericht von Herbrich19 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Internet
gelöst Mitarbeiter surft auf unerwünschter Seite - Wie damit umgehen? (51)

Frage von sabines zum Thema Internet ...

Netzwerke
LAN2LAN Verbindung sehr langsam flaschenhals gesucht (27)

Frage von PixL86 zum Thema Netzwerke ...

Router & Routing
PFsense - Netzverbindung steht, aber kein Internet vorhanden (24)

Frage von aschmid zum Thema Router & Routing ...

Windows Server
gelöst Windows 2016 Hyper-V und VHDS (19)

Frage von emeriks zum Thema Windows Server ...