подстрока с помощью bat команды

У меня есть следующая вещь в моем bat-файле. сказать

набор path=c:\temp\test

так в основном я хочу иметь вывод, который дал бы мне результат как c:\temp\

я не нашел indexof эквивалента в bat команде.

Спасибо.

7
задан user320550 22 April 2010 в 11:38
поделиться

3 ответа

Зачем вам это?

Ответ Йоханнеса является возможным решением, но, возможно, путь, на который вы ссылаетесь, передается (или может быть) передан в качестве аргумента сценарию, и в этом случае вы можете использовать следующий синтаксис:

REM Extracts the drive and path from argument %1
SET p=%~dp1

В качестве альтернативы вы может сочетать .. и путь скрипта (% 0 ):

REM Sets p to a sibling of the script directory
SET p=%~dp0..\test
1
ответ дан 7 December 2019 в 03:13
поделиться

У простых подстрок есть проблема, заключающаяся в том, что вы должны корректировать их каждый раз, когда ваши пути меняются, и это не общее решение проблемы.

Следующий командный файл демонстрирует концепцию того, как можно выполнить усечение части пути:

@echo off
set foo=C:\Temp\Test
call :strip
echo %foo%
goto :eof

:strip
if not "%foo:~-1%"=="\" (
    set foo=%foo:~0,-1%
    goto :strip
)
goto :eof

Он жестко привязан к одной переменной, но при необходимости это легко исправить.

Основной частью здесь является подпрограмма strip , которая выполняет цикл и отсекает последний символ строки до тех пор, пока не будет найдена обратная косая черта. Это эффективно удаляет последнюю часть пути.

0
ответ дан 7 December 2019 в 03:13
поделиться

Вопрос, который действительно заставляет меня желать, чтобы 4DOS все еще существовала. Однако я нашел кое-что, что могло бы помочь в alt.msdos.batch.nt . Страница справочника для набора , кажется, содержит большую часть той же информации. (команда help set )

set test=123456789

rem extract chars 0-5 from the variable test
set test=%test:~0,5%

echo %test%

(Примечание: проверено на Windows XP SP3)

3
ответ дан 7 December 2019 в 03:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: