por que, depois da subtração, um espaço extra é gerado em um script em lote?

1

Estou tentando copiar meu arquivo dbf para uma pasta de backup toda segunda-feira.

Se a segunda-feira não for maior que 7, copiará o arquivo do mês anterior.

Quando subtraio 1 do mês, adiciona um espaço extra.

cls
@echo off

for /F "tokens=1-4 delims=/ " %%i in ('date /t') do (
set WD=%%i
set D=%%j
set M=%%k
set Y=%%l
) 

set day="SUN"
set now="%WD%"
set /a ss=%M%-1

set j=0%ss%

IF /I "%now%"=="%day%"  ( 
    set month=%M%
) ELSE ( 
    IF %D% LEQ 7 ( 
        set month=%j% 
    ) ELSE (
            set month=%M% 
        )
    )

echo S2?%month%160.dbf

Saída atual:

S2?03 160.dbf 

Saída desejada:

S2?03160.dbf 

O que há de errado com o meu código?

    
por SANJAY CHAKRABORTY 04.04.2016 / 07:28

1 resposta

1

Se você for para o final de cada linha no seu editor de texto, você verá que você tem duas instruções SET com um espaço não desejado no final. Você pode resolver o problema removendo o espaço indesejado.

Uma boa prática a ser usada ao usar o SET é incluir toda a atribuição entre aspas. Todo o texto após a cotação final será ignorado, para que você não precise se preocupar com espaços ocultos no final:

set "var=value"  This text after the last quote is ignored
    
por 05.04.2016 / 00:01