3

Я хочу проверить, являются ли последние символы переменной окружения \ или .exe . Как я могу сделать это в Windows XP SP3?

3 ответа3

7

Чтобы использовать подстроки:

set _parm1=foo.exe
if [%_parm1:~-1%]==[\] echo ends with \
if /i [%_parm1:~-4%]==[.exe] echo ends with .exe

Вы заменяете число перед знаком%, чтобы изменить количество проверяемых символов в конце строки.

3

Не делай этого ради собственного здравомыслия. Переключитесь на PowerShell, Perl, Python, C # ... даже VBScript приемлемо.


:: call the subroutine defined below...
call :check "%somevariable%"
:: and check its exit code
if %ERRORLEVEL% equ 0 (
    echo Yes
) else (
    echo No
)

goto :eof

:check
    if "%~nxi"=="" exit /b 0
    :: do a case-insensitive check because Windows would accept ".EXE"
    :: and ".Exe", so we should too.
    if /i "%~xi"==".exe" exit /b 0
    exit /b 1

Для сравнения эквивалентный код Python:

if somevar.endswith("\\") or somevar.lower().endswith(".exe"):
    print("Yes")
else:
    print("No")
0

Вы пытаетесь сделать это программно или только один раз?

Если вы хотите увидеть переменную окружения один раз, наберите echo %variablename% .

Если вы пытаетесь сделать это программно, вам, вероятно, потребуется использовать VBScript или что-то подобное для выполнения требуемой манипуляции со строками. В MS Script Repository должен быть пример, который поможет вам начать, в зависимости от того, что именно вы собираетесь делать с переменной, как только вы ее изолируете.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .