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, 3363 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 ..
Neuester Wissensbeitrag
Ähnliche Inhalte
VB for Applications
Excel Makro zum Suchen von Spalten und exportieren in CSV (3)

Frage von Raptox zum Thema VB for Applications ...

Batch & Shell
gelöst Nach bestimmten Ordner namen suchen und in einem anderem Pfad kopieren (8)

Frage von erdgnrft zum Thema Batch & Shell ...

Batch & Shell
gelöst Suchen ersetzen mit Sonderzeichen (2)

Frage von GNLen1 zum Thema Batch & Shell ...

Batch & Shell
Mit Batch einen Dateityp auf Partition suchen (2)

Frage von M4tze521999 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Hardware
Laptop ins Salzwasser gefallen (18)

Frage von Marcel94 zum Thema Hardware ...

Switche und Hubs
LAG zwischen Cisco SG300 und Dlink DGS1100 herstellen - wie? (13)

Frage von White-Rabbit2 zum Thema Switche und Hubs ...

Hardware
Lenovo Yoga 500 über angeschlossene USB Tastatur booten (13)

Frage von thomasreischer zum Thema Hardware ...

Viren und Trojaner
Wie werde ich den Mist "fanli90" wieder los? (12)

Frage von Taumel zum Thema Viren und Trojaner ...