2016-09-07 4 views
0

Я получаю недопустимое число. Числовые константы являются либо десятичными (17), либо шестнадцатеричными (0x11), либо восьмеричными (021). Он также переименовывает его 20161201_2, хотя я бегу сейчас, когда он должен быть 20160801_20160831. Я вставил код. Благодаря.bat файл не работает должным образом, хочу, чтобы ведущий ноль

@echo off 

set FirstDay=01 

set /a Month=%date:~4,2%-1 
set Month=0%Month% 
set Month=%Month:~-2% 

set Year=%date:~10,4% 

if %Month%==00 (
    set Month=12 
    set /a Year=%Year%-1 
) 

if %Month%==01 set "LastDay=31" & goto foundate 
if %Month%==02 set "LastDay=28" & goto foundate 
if %Month%==03 set "LastDay=31" & goto foundate 
if %Month%==04 set "LastDay=30" & goto foundate 
if %Month%==05 set "LastDay=31" & goto foundate 
if %Month%==06 set "LastDay=30" & goto foundate 
if %Month%==07 set "LastDay=31" & goto foundate 
if %Month%==08 set "LastDay=31" & goto foundate 
if %Month%==09 set "LastDay=30" & goto foundate 
if %Month%==10 set "LastDay=31" & goto foundate 
if %Month%==11 set "LastDay=30" & goto foundate 
if %Month%==12 set "LastDay=31" & goto foundate 



:foundate 
echo The year is: %Year% 
echo The month is: %Month% 
echo First day of this month is: %FirstDay% 
echo Last day of this month is: %LastDay% 

set FileDir=Z:\"EpicCare Reports"\Reports_Team\Scheduled_Reports_Output \PreUHC\ 


set fileext=.txt 
set Ifile=CPT_000318_ 
set ofile=%ifile%%Year%%Month%%FirstDay%_%Year%%Month%%Lastday%%fileext% 

echo Output Filename: %ofile% 
ren %FileDir%%ifile%.txt %ofile% 

    move /Y %FileDir%%ofile% Z:\"EpicCare Reports"\Reports_Team\Scheduled_Reports_Output\UHC\ 
+0

это не помогает. – tjonas

+0

Вам просто нужно делать все математические вычисления без нулевых * нулей и добавлять их только для отображения окончательного результата ... – aschipfl

ответ

0

Проблема с ведущими нулями, которые интерпретируются как только вы пытаетесь выполнить расчеты:

set month=08 
set /A month+=1 

даст точную ошибку вы сообщаете, потому что 08 интерпретируется как восьмеричное число, и недействителен, так как 8 не может быть восьмеричной цифрой.

Fixable разными способами. Мой личный:

set month=%month:08=8% 
set month=%month:09=9% 
set /A month+=1 
set month=%month:8=08% 
set month=%month:9=09% 
+0

Что я могу сделать, чтобы исправить это? Извините, я просто учусь. – tjonas

+0

перейдите по ссылке (вопрос был помечен как дубликат, но сначала вам нужно было понять, в чем проблема), он исправляет его с помощью трюка (добавьте 1, затем substract 100, –

+0

Мне нужен начальный ноль, это сохранит его? – tjonas

Смежные вопросы