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, 3416 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 String in TXT suchen, überprüfen und wenn noetig aendern ? (4)

Frage von buliwyf zum Thema Batch & Shell ...

Visual Studio
gelöst Vb.net raw string in xdocument einfügen (6)

Frage von Herbrich19 zum Thema Visual Studio ...

Batch & Shell
gelöst Powershell scriptblock - Anführungszeichen (3)

Frage von Markus2016 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Heiß diskutierte Inhalte
Viren und Trojaner
Ransomware .nm4 (14)

Frage von Zyklo92 zum Thema Viren und Trojaner ...

Microsoft Office
+1.000 Ordner in Outlook: Wie besser? (11)

Frage von Matsushita zum Thema Microsoft Office ...

Zusammenarbeit
Administrator Verhalten nach Vertragskündigung (10)

Frage von sysbone zum Thema Zusammenarbeit ...