Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 3442 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
Batch & Shell
gelöst Powershell scriptblock - Anführungszeichen (3)

Frage von Markus2016 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch um Satz zwischen Anführungszeichen aus 1. Zeile in Textdatei lesen (3)

Frage von georg2204 zum Thema Batch & Shell ...

Batch & Shell
gelöst String in TXT suchen, überprüfen und wenn noetig aendern ? (4)

Frage von buliwyf zum Thema Batch & Shell ...

Neue Wissensbeiträge
Humor (lol)

Taschenrechner in IOS kaputt!

(5)

Information von Lochkartenstanzer zum Thema Humor (lol) ...

Sicherheit

Kanadischer Geheimdienst veröffentlicht erstmals Sicherheitssoftware

(3)

Information von BassFishFox zum Thema Sicherheit ...

Virtualisierung

Docker Monitoring und Steuerung per "sen"

Tipp von Frank zum Thema Virtualisierung ...

Heiß diskutierte Inhalte
Windows 7
Abbruch bei Brennvorgang (19)

Frage von Simulant zum Thema Windows 7 ...

Router & Routing
Externe IP von innen erreichbar machen (16)

Frage von Windows10Gegner zum Thema Router & Routing ...

Firewall
WIndows 7 RDP Massen Angriff (14)

Frage von Motte990 zum Thema Firewall ...