Видалити кінцеву скісну риску з введення пакетного файлу


75

У мене є пакетний файл, який я хочу вдосконалити. Замість того, щоб вимагати від користувача надати шлях до папки без косої риски, чи є простий спосіб для мене просто видалити останній символ із шляху, якщо на кінці є коса риса?

: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

Відповіді:


140

Ви можете використовувати синтаксис, аналогічний оцінці:

::Does string have a trailing slash? if so remove it 
IF %datapath:~-1%==\ SET datapath=%datapath:~0,-1%

Дякую! Я щойно натрапив на таке питання, і це була ідеальна відповідь.
gregturn

8
Ви також можете розглянути можливість просто додати a .у випадку косої риски. Lil 'коротший за синтаксис підрядка.
Barett

2
Що, якби шлях був "C:\My Folder\"?
BaSsGaz

3
І навпаки, якщо ви хочете переконатися, що в кінці є зворотний слеш, це буде: IF NOT "%datapath:~-1%"=="\" SET "datapath=%datapath%\"примусити його. Лапки захищають внутрішні пробіли.
Джессі Чисхолм,

3
Якщо на шляху є пробіли, то потрібно бути обережним із лапками. Якщо %datapath%містять початкові та кінцеві лапки, тоді ви можете використовуватиIF "%datapath:~-2,-1%"=="\" SET datapath="%datapath:~1,-2%"
йойо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.