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-Key: 190546

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

Printed on: April 19, 2024 at 04:04 o'clock

Member: pieh-ejdsch
pieh-ejdsch Aug 31, 2012 at 19:08:41 (UTC)
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
Member: Highend01
Highend01 Aug 31, 2012 at 19:43:01 (UTC)
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
Member: pieh-ejdsch
pieh-ejdsch Aug 31, 2012 at 21:12:30 (UTC)
Goto Top
ups BlindKopie - BCC an ... mein Fehler. Richtig ist es Erweitert mit Tilde:
!test:~0,1!

Gruß Phil
Member: Highend01
Highend01 Sep 01, 2012 at 17:47:22 (UTC)
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