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

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

Printed on: April 28, 2024 at 16:04 o'clock

Mitglied: 4091525239
4091525239 Oct 08, 2022 updated at 08:47:27 (UTC)
Goto Top
Benutze Anführungszeichen beim Deklarieren und Verwenden von Variablen dann stören die Klammern auch nicht
set "Datei=Meine Datei (neu).txt"  
Member: Kriegstreiber
Kriegstreiber Oct 08, 2022 at 10:42:23 (UTC)
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.
Mitglied: 4091525239
Solution 4091525239 Oct 08, 2022 updated at 16:28:56 (UTC)
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!
)