Entfernen Sie den abschließenden Schrägstrich aus der Batchdatei-Eingabe

75

Ich habe eine Batch-Datei, die ich verbessern möchte. Gibt es für mich eine einfache Möglichkeit, das letzte Zeichen einfach aus dem Pfad zu entfernen, wenn am Ende ein Schrägstrich steht, anstatt von einem Benutzer die Angabe eines Ordnerpfads ohne abschließenden Schrägstrich zu verlangen?

:START
@echo What folder do you want to process? (Provide a path without a closing backslash)
set /p datapath=

::Is string empty?
IF X%datapath% == X GOTO:START

::Does string have a trailing slash?
IF %datapath:~-1%==\ GOTO:START
Bach
quelle

Antworten:

139

Sie können eine Syntax verwenden, die Ihrer Bewertung ähnelt:

::Does string have a trailing slash? if so remove it 
IF %datapath:~-1%==\ SET datapath=%datapath:~0,-1%
akf
quelle
Vielen Dank! Ich bin gerade auf ein solches Problem gestoßen, und dies war die perfekte Antwort.
Gregturn
8
Sie können auch in Betracht ziehen, .im Falle eines abschließenden Schrägstrichs nur ein hinzuzufügen . Ein bisschen kürzer als die Teilstringsyntax.
Barett
2
Was wäre, wenn der Weg wäre "C:\My Folder\"?
BaSsGaz
3
Umgekehrt, wenn Sie sicherstellen möchten, dass es am Ende einen Backslash gibt, wäre dies: IF NOT "%datapath:~-1%"=="\" SET "datapath=%datapath%\"Erzwingen. Die Anführungszeichen schützen Innenräume.
Jesse Chisholm
3
Wenn der Pfad Leerzeichen enthält, müssen Sie mit Anführungszeichen vorsichtig sein. Wenn es %datapath%führende und nachfolgende Anführungszeichen enthält, können SieIF "%datapath:~-2,-1%"=="\" SET datapath="%datapath:~1,-2%"
yoyo