Batch Probleme Ausrufezeichen werden nicht interpretiert
Hallo ihr,
ich hab folgendes Problem mit einer Batch-Datei.
Hier mal mein Code:
@echo off
Setlocal EnableDelayedExpansion
for %%i in (11 25) do (
mvn site
md %%i
SET dir=%cd%
for /F %%j in ('dir /s /b "coverage.xml"') do (
SET sbasedir=%%j
SET sbasedir=!sbasedir:~0,-36!
SET sbasedir=!!sbasedir:%dir%=!!
SET sbasedir=!sbasedir:~1!
ren "%%j" %%i_!sbasedir!.xml
for /F %%t in ('dir /s /b "%%i_!sbasedir!.xml"') do (
move %%t %%i
)
)
)
Die .bat soll alle Dateien suchen, die coverage.xml heißen, diese nach ihrem Projekt-Ordner benennen und in ihren Versions-Ordner(hier die 11 und die 25) schieben. Ich hab jetzt das Problem, dass alles super läuft sobald ich mvn site rausnehme . Wenn mvn site allerdings drin steht, kommts mir so vor, als würden die ! nicht mehr interpretiert werden. Hatte einer vielleicht ein ähnliches Problem und kann mir helfen?
Ich verwende den Maven Site Befehl, um passend zum Projekt eine Projektübersicht(also hier die coverage.xml) zu erstellen.
Ich dank euch schonmal im vorraus!
ich hab folgendes Problem mit einer Batch-Datei.
Hier mal mein Code:
@echo off
Setlocal EnableDelayedExpansion
for %%i in (11 25) do (
mvn site
md %%i
SET dir=%cd%
for /F %%j in ('dir /s /b "coverage.xml"') do (
SET sbasedir=%%j
SET sbasedir=!sbasedir:~0,-36!
SET sbasedir=!!sbasedir:%dir%=!!
SET sbasedir=!sbasedir:~1!
ren "%%j" %%i_!sbasedir!.xml
for /F %%t in ('dir /s /b "%%i_!sbasedir!.xml"') do (
move %%t %%i
)
)
)
Die .bat soll alle Dateien suchen, die coverage.xml heißen, diese nach ihrem Projekt-Ordner benennen und in ihren Versions-Ordner(hier die 11 und die 25) schieben. Ich hab jetzt das Problem, dass alles super läuft sobald ich mvn site rausnehme . Wenn mvn site allerdings drin steht, kommts mir so vor, als würden die ! nicht mehr interpretiert werden. Hatte einer vielleicht ein ähnliches Problem und kann mir helfen?
Ich verwende den Maven Site Befehl, um passend zum Projekt eine Projektübersicht(also hier die coverage.xml) zu erstellen.
Ich dank euch schonmal im vorraus!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 152715
Url: https://administrator.de/forum/batch-probleme-ausrufezeichen-werden-nicht-interpretiert-152715.html
Ausgedruckt am: 12.04.2025 um 14:04 Uhr
8 Kommentare
Neuester Kommentar

Moin,
3 Dinge:
Gruß
3 Dinge:
- verwende bitte Code Blöcke
- bei Problembatchen kein führendes @echo off
- bei EnableDelayedExpansion keine %% sondern !!
Wenn mvn site allerdings drin steht, kommts mir so vor
Da mir mvn site genausowenig sagt, wie jedem anderen außer dir - solltest du dir deren Inhalt genauer ansehen.Gruß
Hallo -Kidow- und willkommen im Forum!
Das "!"-Problem ist der Preis, den Du für die Verwendung von "delayedExpansion" zahlen musst - daher ist oft eine Vermeidungsstrategie vorteilhafter, zB (ungestest):
Grüße
bastla
Das "!"-Problem ist der Preis, den Du für die Verwendung von "delayedExpansion" zahlen musst - daher ist oft eine Vermeidungsstrategie vorteilhafter, zB (ungestest):
@echo on & Setlocal
for %%i in (11 25) do (
mvn site
md "%%i"
for /F %%j in ('dir /s /b "coverage.xml"') do set "sbasedir=%%j" & call :ProcessLine "%%i" "%%j"
)
goto :eof
:ProcessLine
SET "sbasedir=sbasedir:~0,-36"
call SET "sbasedir=%%sbasedir:%cd%=%%"
SET "sbasedir=%sbasedir:~1%"
ren %2 "%~1_%sbasedir%.xml"
for /F %%t in ('dir /s /b "%1_%sbasedir%.xml"') do move "%%t" %1
goto :eof
bastla
Hallo bastla,
so wie ich Kidow verstehe ist das Problem, das die !var! Auflösung nicht mehr läuft, nicht das verschwinden von Ausrufezeichen in der Ausgabe.
Meiner Ansicht nach ist DelayedExpansion in den meisten Fällen die bessere Wahl, einfach weil die ganzen Sonderzeichen nicht weiter verarbeitet werden.
Es bleibt nur das Problem, irgendwie "problematische" Strings mit "!" und "^" in eine Variable zu bekommen, sobald man nur mit den Variablen arbeiten kann, gibt es das "!"-Problem ja nicht mehr.
Gruß
jeb
so wie ich Kidow verstehe ist das Problem, das die !var! Auflösung nicht mehr läuft, nicht das verschwinden von Ausrufezeichen in der Ausgabe.
Meiner Ansicht nach ist DelayedExpansion in den meisten Fällen die bessere Wahl, einfach weil die ganzen Sonderzeichen nicht weiter verarbeitet werden.
Es bleibt nur das Problem, irgendwie "problematische" Strings mit "!" und "^" in eine Variable zu bekommen, sobald man nur mit den Variablen arbeiten kann, gibt es das "!"-Problem ja nicht mehr.
Gruß
jeb
Hallo jeb!
Grüße
bastla
so wie ich Kidow verstehe ist das Problem, das die !var! Auflösung nicht mehr läuft, nicht das verschwinden von Ausrufezeichen in der Ausgabe.
... was bei Nicht-Verwendung der "delayedExpansion" aber eigentlich egal sein sollte (allerdings habe ich tatsächlich nur oberflächlich drübergeschaut und den Batch nicht wirklich nachvollzogen) ...Grüße
bastla