Exclui um caractere de um argumento passado para um arquivo de lote

1

Suponha que em um arquivo em lotes, digamos receive.bat, seja chamado com alguns argumentos. Agora o receive.bat é executado e precisa processar esses argumentos.

Às vezes (mas nem sempre), um argumento terminará com uma barra à direita (por exemplo, "C:\a\b\" ). O número de argumentos não é fixo e o (somente) tal argumento pode aparecer em qualquer lugar na lista de argumentos.

Como meu arquivo .bat pode remover o \ em \" , por exemplo, para obter "C:\a\b" ?

Atualização:

Eu tentei os exemplos abaixo e o terceiro não está funcionando.
Apenas disse there should not be a SET here .

SET var=C:\
IF %var:~-1%==\ SET var=%var:~0, -1%
@ECHO %var%

SET var2="C:\
IF %var2:~-2%==\ SET var2=%var2:~0, -2%
@ECHO %var2%

SET var3="C:\"
IF %var3:~-2%==\a" SET var3=%var3:~0, -2%
@ECHO %var3%
    
por user565739 22.01.2013 / 19:47

1 resposta

2

Você está definindo var3 para "C: \" e comparando os dois últimos caracteres com \ a "? Veja abaixo e esta página para ajuda na extração de subseqüência de lote.

SET var=C:\
IF %var:~-1%==\ SET var=%var:~0,-1%
@ECHO %var%
REM Output: C:

SET var2="C:\
IF %var2:~-1%==\ SET var2=%var2:~0,-1%
@ECHO %var2%
REM Output: "C:

SET var3="C:\"
IF %var3:~-2,1%==\ SET var3=%var3:~0,-2%"
@ECHO %var3%
REM Output: "C:"
    
por 22.01.2013 / 20:31