1

Я пытаюсь копировать мой файл DBF в папку для резервного копирования каждый понедельник.

Если понедельник не больше 7, он скопирует файл предыдущего месяца.

Когда я вычитаю 1 из месяца, это добавляет дополнительный пробел.

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

Токовый выход:

S2?03 160.dbf 

Желаемый результат:

S2?03160.dbf 

Что не так с моим кодом?

1 ответ1

1

Если вы перейдете в конец каждой строки в своем текстовом редакторе, вы обнаружите, что у вас есть два оператора SET с нежелательным завершающим пробелом в конце. Вы можете решить проблему, удалив ненужное место.

Хорошей практикой для использования при использовании SET является заключение всего назначения в кавычки. Весь текст после окончательной цитаты будет игнорироваться, поэтому вам не придется беспокоиться о случайных конечных пробелах:

set "var=value"  This text after the last quote is ignored

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