У меня есть пакетный файл, который я собрал вместе, что работает. Тем не менее, я думаю, что кодирование является немного уродливым, и возможно или возможно, это должно быть сделано лучше.Пакетные файлы Если оператор
По существу этот файл запускается через запланированную задачу ежедневно и предназначен для просмотра внутри определенного каталога для файла csv со студенческой учетной записью и кредитной информацией.
Если файл найден, он обрабатывается скриптом, если нет, то его отметили, что файл не найден и сценарий завершен.
Бит, который я пытаюсь «сделать лучше», заключается в том, что, когда обнаружен csv IS, мне нужно выяснить, в каком месяце мы находимся, а затем действие зависит от этого. Таким образом, в этом случае, если переменная месяца возвращает 01,02,03,04,05,06,07 или 08, тогда к обработке файла будет добавлено примечание «Кредитное распределение 15/16»
В качестве альтернативы, если месяц должен быть чем-то еще (IE 09,10,11,12), то файл обрабатывается таким же образом, но в примечании будет указано «Кредитное распределение 16/17»
Может ли кто-нибудь предложить лучшее кодирование ? структура для «если» заявления в ниже
@echo off
::Define Variables
SET server_command="c:\Program Files\PaperCut MF\server\bin\win\server-command.exe"
SET master="c:\credit_allocation\processed\master.csv"
SET month=%date:~3,-5%
SET year=%date:~8%
SET /a sum=%date:~8%+1
echo %sum% > next_year.txt
SET /p next_year=<next_year.txt
DEL next_year.txt
SET /a sum2=%date:~8%-1
echo %sum2% > last_year.txt
SET /p last_year=<last_year.txt
DEL last_year.txt
IF EXIST "c:\credit_allocation\student_credit.csv" GOTO Do_Stuff
echo. >> %master%
echo.No CSV Found at %time:~0,5% on %date% >> %master%
GOTO EOF
:Do_Stuff
::Add run date/time to master record
echo. >> %master%
echo.Process run at %time:~0,5% on %date% >> %master%
::Find out the month, IE- Jan to Aug then still previous student year, or Sept to Dec then next student year
IF /I "%month%"=="01" (
GOTO Jan2Aug
)
IF /I "%month%"=="02" (
GOTO Jan2Aug
)
IF /I "%month%"=="03" (
GOTO Jan2Aug
)
IF /I "%month%"=="04" (
GOTO Jan2Aug
)
IF /I "%month%"=="05" (
GOTO Jan2Aug
)
IF /I "%month%"=="06" (
GOTO Jan2Aug
)
IF /I "%month%"=="07" (
GOTO Jan2Aug
)
IF /I "%month%"=="08" (
GOTO Jan2Aug
)
::Sept to Dec - Loop through CSV file for username
for /f "tokens=1,2 delims=," %%a in (c:\credit_allocation\student_credit.csv) do (
%server_command% adjust-user-account-balance "%%a" "%%b" "Credit Allocation %year% /%next_year%"
)
GOTO Update_Master_Record
:Jan2Aug
::Jan to Aug - Loop through CSV file for username
for /f "tokens=1,2 delims=," %%a in (c:\credit_allocation\student_credit.csv) do (
%server_command% adjust-user-account-balance "%%a" "%%b" "Credit Allocation %last_year%/%year%"
)
:Update_Master_Record
::Take contents of CSV and append to a Master CSV record then delete original CSV file
cd c:\credit_allocation
forfiles /m *.csv /c "cmd /c echo. >> %master% && type @file >> %master% && del @file"
:EOF
Этот вопрос может лучше подходят на [Просмотр Кода] (http://codereview.stackexchange.com/). – aschipfl