kriegstreiber
Goto Top

Umbenennen von Sonderzeichen in Variablen (Batch)

Hallo Community,

ich habe ein kleines Problem, wo ich keine Lösung für finde. Ich habe ein recht komplexes Batch Script wo im Laufe des Scripts auch Dateinamen als Variable eingelesen werden. Da im Script mit () gearbeitet wird, steigt das Script bei Dateinamen mit Sonderzeichen wie () aus. Beispiel:

set Datei=Meine Datei (neu).txt

soll zu:

set Datei=Meine Datei ^(neu^).txt

in der Variable geändert werden. Ich bin nur nicht fähig das via Batch zu realisieren, bzw. fällt mir keine Befehlskette ein, die genau das macht. Hat evtl. jemand eine Idee wie ich das realisieren kann?

Content-ID: 4194690725

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

Ausgedruckt am: 22.11.2024 um 09:11 Uhr

4091525239
4091525239 08.10.2022 aktualisiert um 10:47:27 Uhr
Goto Top
Benutze Anführungszeichen beim Deklarieren und Verwenden von Variablen dann stören die Klammern auch nicht
set "Datei=Meine Datei (neu).txt"  
Kriegstreiber
Kriegstreiber 08.10.2022 um 12:42:23 Uhr
Goto Top
Doch sie stören trotzdem. Denn sobald im Batch eine Zeile ist die mehrere Abrufe in Klammern macht, steigt er aus. Z.B.

if exist blabla.txt (
 echo Meine Datei (neu).txt
)

steigt er aus. Da muss :

if exist blabla.txt (
 echo Meine Datei ^(neu^).txt
)

stehen, ansonsten "denkt" Batch, dass die Klammer des Dateinamens das Ende der Klammer des Befehls ist.
4091525239
Lösung 4091525239 08.10.2022 aktualisiert um 18:28:56 Uhr
Goto Top
Doch sie stören trotzdem
Nöp, mit delayed expansion und Ausrufezeichen statt Prozentzeichen nicht ....
https://stackoverflow.com/questions/7883169/how-to-escape-variables-with ...

@echo off &setlocal enabledelayedexpansion
set "Datei=Meine Datei (neu).txt"  
if 1==1 (
    echo !Datei!
)