highend01
Goto Top

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

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:

@echo off
setlocal enableextensions enabledelayedexpansion

set dat="Lucida Console"  

if ^!dat:~0,1!==^" (  
  echo !dat!
) else (
  echo Anfuehrungszeichen nicht gefunden
)


Als Gegenbeispiel: Benötigt man "setlocal enableextensions enabledelayedexpansion" nicht, kann
man ganz normal escapen und dieses script läuft deshalb auch korrekt:
@echo off

set dat="Lucida Console"  

if ^%dat:~0,1%==^" (  
  echo %dat%
) else (
  echo Anfuehrungszeichen nicht gefunden
)

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

Content-ID: 190546

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

Ausgedruckt am: 18.12.2024 um 19:12 Uhr

pieh-ejdsch
pieh-ejdsch 31.08.2012 um 21:08:41 Uhr
Goto Top
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
Highend01
Highend01 31.08.2012 um 21:43:01 Uhr
Goto Top
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):

"1!" kann syntaktisch an dieser Stelle nicht verarbeitet werden.  

Kopiert aus der Eingabeaufforderung im Gesamtkontext also:
D:\Users\Highend\Downloads>.test.bat

D:\Users\Highend\Downloads>setlocal enabledelayedexpansion

D:\Users\Highend\Downloads>set "A=""  

D:\Users\Highend\Downloads>set "test="1"  

D:\Users\Highend\Downloads>if " EQU !A! echo ja  
ja
"1!" kann syntaktisch an dieser Stelle nicht verarbeitet werden.  

D:\Users\Highend\Downloads>if !test:0,1! equ !A! echo ja
pieh-ejdsch
pieh-ejdsch 31.08.2012 um 23:12:30 Uhr
Goto Top
ups BlindKopie - BCC an ... mein Fehler. Richtig ist es Erweitert mit Tilde:
!test:~0,1!

Gruß Phil
Highend01
Highend01 01.09.2012 um 19:47:22 Uhr
Goto Top
Auch mit Tilde bekomme ich die gleiche Fehlermeldung face-smile

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