[gelöst] Batch | Slash am Ende eines Pfades löschen

Palladin007

assimiliert
Code:
@echo off
setlocal EnableDelayedExpansion
set /p pfad=

set pfad_test=!pfad:~-1,1!
if %pfad_test%==/ (
    set pfad=!pfadx:~0,-1!
)
echo %pfad%
pause

Dieses kleine Teil-Programm soll sich einen eingegebenen Pfad anschauen und kontrollieren, ob am Ende dieses Zeichen ist: \
Wenn ja, dann soll den Pfad neu schreiben, aber ohne dieses Zeichen.


Und das hab ich mir so vorgestellt:
Es wird eine test-Variable bestimmt, die das letzte Zeichen des eigegeben Pfades enthält.

Wenn sie ein / ist, dann wird folgendes getan:

Die Zeile set pfad=!pfadx:~0,-1! soll von dem Pfad alle Zeichen, außer das letzte abspeichern.
Das tut es aber nicht.

Als Beispiel:

Wenn ich c:\ eingebe, soll das Slah weg. Er nimmt also %pfad% und speichert alle Zeichen, außer das letzte wieder in pfad. Dann müsste da nicht c:\ sondern c: stehen.
Wenn ich danach aber echo %pfad% eingebe, bekomme ich wieder c:\

Von dem Problem steht auch was unter set /? aber irgendwie kapier ich das noch nicht ganz.

Was muss ich tun, dass der Pfad ohne das letzte Zeichen wieder unter pfad gespeichert wird?
Ich weis, dass man da irgendwas mit den Ausrufezeichen machen muss, aber ich weis nicht, was.
 
Imho ist das problem das du Slash (/) und Backslash (\) verwechselst.

Auf jeden funktionierts so:
Code:
@echo off
setlocal EnableDelayedExpansion
set /p pfad=

if "!pfad:~-1!"=="\" (
	set pfad=!pfad:~0,-1!
)
echo %pfad%
pause
 
Oben