小小日記本批處理

功能:實現標籤式記錄的小小日記本,可以記錄,自定義標籤及彙總,寫着玩的,可能會有bug。

@echo off
setlocal enabledelayedexpansion
echo 我的標籤日記程序
echo 標籤文件在保存位置中,名稱爲事情標籤.txt和情緒標籤.txt,可以自行添加,每行一個標籤
set /p path=請輸入保存的位置(不存在將會自動新建,例如d:\我的標籤日記\):
set file=!date:~0,-3!
set file=!path!!file:/=!日記.txt
if not exist !path! (
md !path!
rem 事情標籤
echo 學習>>!path!事情標籤.txt
echo 娛樂>>!path!事情標籤.txt
echo 勞動>>!path!事情標籤.txt
echo 運動>>!path!事情標籤.txt
echo 聚會>>!path!事情標籤.txt
echo 休息>>!path!事情標籤.txt
rem 情緒標籤
echo 開心>>!path!情緒標籤.txt
echo 傷心>>!path!情緒標籤.txt
echo 生氣>>!path!情緒標籤.txt
echo 焦慮>>!path!情緒標籤.txt
echo 無聊>>!path!情緒標籤.txt
echo 困惑>>!path!情緒標籤.txt
echo 失望>>!path!情緒標籤.txt
) else (
if exist !file! (
del /q !file!
)
if exist !path!彙總.txt (
del /q !path!彙總.txt
)
)
for /f %%t in (!path!事情標籤.txt) do (
set /p time=請輸入%%t的時間,兩位小數,單位小時,範圍0.00-24.00,例如1.75:
echo %%t:!time!小時>>!file!
)
for /f %%m in (!path!情緒標籤.txt) do (
set /p score=請輸入%%m情緒的打分整數,單位分,範圍0-100,例如80:
echo %%m:!score!分>>!file!
)
set /p seelog=需要現在查看今日日記嘛?0是1否,請選擇數字:
if !seelog! equ 0 (
start !file!
)
​set /p isok=需要彙總最近的情況嗎?0是1否,請選擇數字:
if !isok! equ 0 (
set idx=0
for /f %%d in ('dir /b !path!') do (
if not %%d equ 事情標籤.txt (
if not %%d equ 情緒標籤.txt (
if not %%d equ 彙總.txt (
set /a idx=!idx!+1
)
)
)
)
if !idx! gtr 0 (
set totaltime=0
for /f %%t in (!path!事情標籤.txt) do (
for /f %%d in ('dir /b !path!') do (
if not %%d equ 事情標籤.txt (
if not %%d equ 情緒標籤.txt (
if not %%d equ 彙總.txt (
set tname=%%d
for /f "tokens=1,2,3* delims=:" %%a in (!path!!tname!) do (
if %%a equ %%t (
set hour=%%b
set hour=!hour:小時=!
set tmp=!hour:.=!
if not !tmp! equ !hour! (
if "!hour:~-2,1!" equ "." (
set hour=!hour:.=!
if "!hour:~0,1!" equ "0" (
set hour=!hour:~1!
) else (
set /a hour=!hour!*10
)
) else (
set hour=!hour:.=!
if "!hour:~0,1!" equ "0" (
set hour=!hour:~1!
)
)
) else (
set /a hour=!hour!*100
)
set /a totaltime=!totaltime!+!hour!
)
)
)
)
)
)
set /a avgtime=!totaltime!/!idx!
set showtime=
if !totaltime! lss 10 (
set showtime=0.0!totaltime!
) else (
if !totaltime! lss 100 (
set showtime=0.!totaltime!
) else (
if !totaltime! lss 1000 (
set showtime=!totaltime:~0,1!.!totaltime:~-2!
) else (
set showtime=!totaltime:~0,2!.!totaltime:~-2!
)
)
)
set showavgtime=
if !avgtime! lss 10 (
set showavgtime=0.0!avgtime!
) else (
if !avgtime! lss 100 (
set showavgtime=0.!avgtime!
) else (
if !avgtime! lss 1000 (
set showavgtime=!avgtime:~0,1!.!avgtime:~-2!
) else (
set showavgtime=!avgtime:~0,2!.!avgtime:~-2!
)
)
)
echo %%t:總時間!showtime!小時,共!idx!天,平均每天!showavgtime!小時>>!path!彙總.txt
set totaltime=0
)
​set totalscore=0
for /f %%m in (!path!情緒標籤.txt) do (
for /f %%n in ('dir /b !path!') do (
if not %%n equ 事情標籤.txt (
if not %%n equ 情緒標籤.txt (
if not %%n equ 彙總.txt (
set mname=%%n
for /f "tokens=1,2,3* delims=:" %%o in (!path!!mname!) do (
if %%o equ %%m (
set scores=%%p
set scores=!scores:分=!
set /a totalscore=!totalscore!+!scores!
)
)
)
)
)
)
set /a avgscore=!totalscore!*100/!idx!
if !avgscore:~-2! equ "00" (
set /a avgscore=!avgscore!/100
) else (
if !avgscore:~-1! equ "0" (
set /a avgscore=!avgscore!/10
) else (
if "!avgscore:~0,-2!" equ "" (
set avgscore=0.!avgscore:~-2!
) else (
set avgscore=!avgscore:~0,-2!.!avgscore:~-2!
)
)
)
echo %%m:總分!totalscore!分,共!idx!天,平均!avgscore!分>>!path!彙總.txt
set totalscore=0
)
)
)
echo 彙總完畢!
set /p seecount=需要現在查看彙總嘛?0是1否,請選擇數字:
if !seecount! equ 0 (
start !path!彙總.txt
)
pause
exit

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章