Como posso determinar se uma variável cmd do Windows XP termina com uma determinada string?

3

Eu quero verificar se o (s) último (s) caractere (s) de uma variável de ambiente são \ ou .exe . Como posso fazer isso no Windows XP SP3?

    
por rsk82 21.03.2011 / 16:07

3 respostas

7

Para usar substrings:

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

Você substitui o número antes do sinal% para alterar quantos caracteres ele verifica no final da string.

    
por 21.03.2011 / 16:36
3

Não faça isso, por sua própria sanidade. Alterne para o PowerShell, Perl, Python, C # ... até mesmo o VBScript é aceitável.

:: 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

Para comparação, código Python equivalente:

if somevar.endswith("\") or somevar.lower().endswith(".exe"):
    print("Yes")
else:
    print("No")
    
por 21.03.2011 / 16:24
0

Você está tentando fazer isso programaticamente ou apenas uma vez?

Se você quiser ver uma variável de ambiente uma vez, digitar echo %variablename% funcionará.

Se você estiver tentando fazer isso programaticamente, provavelmente precisará usar o VBScript ou algo semelhante para fazer a manipulação de string necessária. Deve haver um exemplo no Repositório de Script MS que pode ajudar você, dependendo do que você está procurando faça com a variável uma vez que você a isolar.

    
por 21.03.2011 / 16:13