志工服務時數累計自動化

更新於 2024/07/21閱讀時間約 21 分鐘

前言:

某單位之志工別服務時數記入於EXCEL檔內,需再匯入衛福部志工系統,內容含有每個月志工服務時數,因志工多,檔案多,筆數多,人工作業費時又常累計算錯,故提此法改善,提高效率。

1. 作業流程

<1> 輸入志工名或不輸入

<2>輸入年份

<3>讀取檔案 ,選取所需項目

<3.1> 判斷名字若不是則跳走

<3.2> 判斷年份若不是則跳走

<3.3>若志工名不同. 列出累計

<3.4>對象rec. 列出項目

<3.5>對象rec. 計算時數

<4>檔案讀取終了,列出累計

<5>JOB是否繼續,不是終了

2. 作業說明

2.0 先判斷志工檔案之資料夾是否存在,不存在結束JOB

2.1 輸入欲查志工名或不輸入直接enter,此時代表欲查詢所有志工

輸入欲查詢志工名字,判斷是否存在,不存在需再輸入

2.2 輸入欲查查詢民國年份,或不輸入直接enter,此時轉換為今年之民國年數

若輸入值 需< 140 and > 100,否則錯誤

2.3 讀取對象目錄內所有檔案,對檔案內的每一筆rec內容,尋找對象項目,若 找到,則執行動作指令

1> 依據 輸入之參數當作引數,將符合之檔案找出

2> 再判斷檔案內容是否有欲查詢之志工內容,若有將該筆Rec.之所需項目取出

3> 判斷志工名,若與前筆不同時, 列出服務時數之累計

4> 將志工服務時數等項目列出

5> 依志工別將每個月之服務時數合計,並換算服務分數之合計,換算為時數單位

 

2.4 查詢結果顯示於瑩幕外,也產出檔案可供參考確認

2.5 查詢完後,可再繼續查詢其他志工

3. 實例說明 cmd name : VolH_Cal.cmd

3.1 來源檔案即是志工別時數紀錄檔,inputfile樣本之內容如下:

姓名,身分證字號,服務日期起,服務日期迄,服務項目,服務內容,服務時數-小時,服務時數-分鐘,受服務人次,交通費,誤餐費,服務區域,備註,匯入動作,序號,國外參與服務人次,國內參與服務人次
劉孟陽,XXXXX90432,1080101,1080131,60,3,6,0,10,0,0,,,A,,,
劉孟陽,XXXXX90432,1080201,1080228,60,3,6,0,10,0,0,,,A,,,
劉孟陽,XXXXX90432,1080301,1080331,60,3,8,0,10,0,0,,,A,,,
劉孟陽,XXXXX90432,1080401,1080430,60,3,6,0,10,0,0,,,A,,,
劉孟陽,XXXXX90432,1080501,1080531,60,3,2,0,0,0,0,,,A,,,
劉孟陽,XXXXX90432,1080601,1080630,60,3,6,0,10,0,0,,,A,,,


3.2 cmd執行時,輸入欲查詢之志工,年份

如下志工名:未輸入;

年份輸入 112

*** Inquiry of volunteer service hours ***

***

**1 Enter 志工名字:

***

**2 Enter 民國年(yyy) :112

*** Volunteer service time process 執行中...

執行結果顯示如下 :

*** Volunteer service time process 執行完了

* ** Inquiry of Volunteer志工:? 年份:112 ** * 查詢日:2024/07/21 週日 10:22:14
--- 姓名 服務日起 服務日迄 時數 分鐘 ---
* 劉孟陽 1120102 1120131 2 0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* 邱鳳英 1120601 1120630 14 0
* 邱鳳英 1120701 1120731 10 30
* 邱鳳英 1120801 1120831 24 30
* 邱鳳英 1120901 1120930 17 30
* 邱鳳英 1121001 1121031 13 30
* 邱鳳英 1121101 1121130 14 0
* 邱鳳英 1121201 1121231 10 30
--------------- Sum Hours: 183 270 4.5 邱鳳英

* **-------------------------------------- 執行終了 on 2024/07/21 週日 10:22:15
**3 Do you inquire other Volunteer ? (Y/N) :

3.3 查詢產出之訊息內容,除了顯示於螢幕外,同時存入txt file

txt檔名: Inquiry_Volunteer_time.txt

本例 txt檔,只查詢四名志工,內容如下

* ** Inquiry of Volunteer志工:?  年份:112 ** *   查詢日:2024/07/21 週日 10:22:14 
--- 姓名 服務日起 服務日迄 時數 分鐘 ---
* 劉孟陽 1120102 1120131 2 0
* 劉孟陽 1120201 1120227 9 30
* 劉孟陽 1120301 1120331 8 0
* 劉孟陽 1120401 1120430 8 0
* 劉孟陽 1120501 1120531 4 0
* 劉孟陽 1120601 1120630 4 0
* 劉孟陽 1120701 1120731 4 0
* 劉孟陽 1120801 1120831 8 0
* 劉孟陽 1120901 1120930 8 0
* 劉孟陽 1121001 1121031 2 0
* 劉孟陽 1121101 1121130 8 0
* 劉孟陽 1121201 1121231 8 0
--------------- Sum Hours: 73 30 .5 劉孟陽
* 王瑛瑛 1120102 1120131 5 0
* 王瑛瑛 1120201 1120227 12 0
* 王瑛瑛 1120301 1120331 12 30
* 王瑛瑛 1120401 1120430 10 0
* 王瑛瑛 1120501 1120531 10 0
* 王瑛瑛 1120601 1120630 10 0
* 王瑛瑛 1120701 1120731 7 30
* 王瑛瑛 1120801 1120831 17 30
* 王瑛瑛 1120901 1120930 11 0
* 王瑛瑛 1121001 1121031 11 0
* 王瑛瑛 1121101 1121130 10 0
* 王瑛瑛 1121201 1121231 13 30
--------------- Sum Hours: 128 120 2.0 王瑛瑛
* 趙羅秀英 1120102 1120131 4 0
* 趙羅秀英 1120201 1120227 5 30
* 趙羅秀英 1120301 1120331 10 0
* 趙羅秀英 1120401 1120430 8 0
* 趙羅秀英 1120501 1120531 4 0
* 趙羅秀英 1120601 1120630 6 0
* 趙羅秀英 1120701 1120731 6 0
* 趙羅秀英 1120801 1120831 10 0
* 趙羅秀英 1120901 1120930 8 0
* 趙羅秀英 1121001 1121031 10 0
* 趙羅秀英 1121101 1121130 15 0
* 趙羅秀英 1121201 1121231 8 0
--------------- Sum Hours: 94 30 .5 趙羅秀英
* 邱鳳英 1120102 1120131 15 30
* 邱鳳英 1120201 1120227 16 0
* 邱鳳英 1120301 1120331 20 30
* 邱鳳英 1120401 1120430 10 30
* 邱鳳英 1120501 1120531 20 30
* 邱鳳英 1120601 1120630 14 0
* 邱鳳英 1120701 1120731 10 30
* 邱鳳英 1120801 1120831 24 30
* 邱鳳英 1120901 1120930 17 30
* 邱鳳英 1121001 1121031 13 30
* 邱鳳英 1121101 1121130 14 0
* 邱鳳英 1121201 1121231 10 30
--------------- Sum Hours: 183 270 4.5 邱鳳英

* **-------------------------------------- 執行終了 on 2024/07/21 週日 10:22:15

4. 改善前後

4.1 改善前 :

(1)須於資料夾內,尋找志工別檔案,手動一一打開檔案

(2) 開啟檔案後,找出該年度的筆數,一年12筆,人工計算整年度的服務時數,分數累計後換算為時單位

(3)多數個志工檔案,因人工作業,易手誤算錯,耗時費工,業務效率差

4.2 改善後: 

(1) 執行後,將資料夾內所有志工檔案,一個一個檔案開啟讀取資料,快速列出志工別服務時數明細及累計

(2) 查詢後的結果 螢幕顯示外,可產出txt檔案 ,提供問題原因查明確認用,或再轉作其他用途使用 

(3) 可一次查詢出全部志工,或志工個別查詢,亦能查詢過去年度之志工服務訊息,精準快速,效率佳 

5. 展開運用

(1) 志工服務時數若有誤植問題發生時,可快速查詢了解現況

(2) 其他單為各系統之資料檔案組,若有多檔或多筆資料,經常須找出資料利用場合時,可應用此法

6.設計編寫

6.1 cmd 語法使用說明

<1> 判斷資料夾是否存在

IF NOT EXIST D:\CSV ( echo ### ERROR : D:\CSV is not exist )

<2> FOR 指令內引數之運用,參考本件如下2種寫法寫法

For /f " tokens=3 delims=:," %%i in ('findstr /S /C:%PAR1% "%PARPath%\CSV\* " ') do (

IF %%i==%PAR1% SET ERRY=0)

IF NOT %ERRY%==0 ( echo ### 找不到志工名:%PAR1%\CSV ,請再輸入 )

說明:

讀取CSV資料夾內所有檔案,讀取該筆rec.內若有與定數%PAR1%相同值,則選出該筆rec,並將該REC內容以"," 作分隔之第三項目取出,以%%i 作變數名取出,提供 DO ()內之指令應用。


For /f " tokens=3,5-6,9-10 delims=:," %%i in ('findstr /S /C:A "%PARPath%\CSV\* " ') do (

CALL :ListSeleRec %%i %%j %%k %%l %%m)

說明:

讀取CSV資料夾內所有檔案,讀取該筆rec.內若有與定數相同之A值,則選出該筆rec,並將該REC內容以","或":" 作分隔之第3,5-6,9-10 共5項目取出,以%%i %%j %%k %%l %%m依序作變數名取出,提供 DO ()內之CALL指令應用,各引數值說明 i=志工姓名 j=服務日起 k=服務日迄 l=服務時數 m=服務分鐘。

<3> IF 可多層判斷,參考如下3種寫法

if A1==A1R (

cmd1-------

) else (

if A2==A2R (

cmd2-------

) else (

if A3==A3R (

cmd3-------

) else (

echo ###ERROR rec. )))

if %a% LSS 150 (echo 11) else ( if %a% GTR 100 ( echo 00 ))


if %a% LSS 150 ( if %a% GTR 100 (echo 00) )

6. 2 本例cmd 設計如下

cmd 檔名: VolH_Cal.cmd

@echo off
setlocal
SET PARPath=D:\志工\志工EXCEL
rem CD C:\Users\admin\Desktop\衛福部志工系統-志工時數

if not EXIST %PARPath%\CSV ( echo ###ERROR : %PARPath%\CSV is not exist & Goto EJob )
D:
CD %PARPath%
rem C:
echo.
echo *** Inquiry of volunteer service hours ***

:Enter_par1
:: --- PAR1 for 志工名字, PAR2 for 服務年分
set PAR1=?
set PAR2=?

echo ***
set /p PAR1="**1 Enter 志工名字:"
if %PAR1% == ? goto Enter_par2

SET ERRY=1
For /f " tokens=3 delims=:," %%i in ('findstr /S /C:%PAR1% "%PARPath%\CSV\* " ') do (
IF %%i==%PAR1% SET ERRY=0)
IF NOT %ERRY%==0 ( echo ### 找不到志工名:%PAR1%\CSV ,請再輸入
Goto Enter_par1 )

:Enter_par2
echo ***
set /p PAR2="**2 Enter 民國年(yyy) :"
if %PAR2% == ? ( SET /a PAR2=%DATE:~,4%-1911 )
set ERRY=0
if %PAR2% GTR 140 (set ERRY=1 ) else ( if %PAR2% LSS 100 ( set ERRY=1 ))
if %ERRY%==1 (
echo ###ERROR 輸入 %PAR2% ,民國年度不正確,請再輸入
goto Enter_par2 )

:Process_Begin
::----出力txt之表頭設定
echo. > Inquiry_Volunteer_time.txt
echo * ** Inquiry of Volunteer志工:%PAR1% 年份:%PAR2% ** * 查詢日:%DATE% %TIME:~,8% >> Inquiry_Volunteer_time.txt
echo --- 姓名 服務日起 服務日迄 時數 分鐘 --- >> Inquiry_Volunteer_time.txt
echo *** Volunteer service time process 執行中...

set B_VName=INIT_VName
SET /a SumH=0
SET /a SumM=0

rem ---Read rec. 無輸入志工名以 "."代替全部讀取
::-----讀取%PARPath%\CSV\* 內所有檔案,檢查檔案內有 A 的該筆資料列出,帶出5個引數----
::---i=姓名 j=服務日起 k=服務日迄 l=時數 m=分鐘
For /f " tokens=3,5-6,9-10 delims=:," %%i in ('findstr /S /C:A "%PARPath%\CSV\* " ') do (
CALL :ListSeleRec %%i %%j %%k %%l %%m)

::----列出合計志工別之服務時數
CALL :Sum_List

echo. >> Inquiry_Volunteer_time.txt
echo *** Volunteer service time process 執行完了
echo * **-------------------------------------- 執行終了 on %DATE% %TIME:~,8% >> Inquiry_Volunteer_time.txt
type Inquiry_Volunteer_time.txt

::----可再次重複執行
set /p PAR3="**3 Do you inquire other Volunteer ? (Y/N) :"
if /i %PAR3% == Y goto Enter_par1

pause ----
:EJob
:: end job
endlocal
exit

:ListSeleRec
::---讀取之年分判斷 yyy = PAR2
SET SByyy=%2
SET SEyyy=%3
IF %SByyy:~0,3% NEQ %PAR2% GOTO Exit_ListSeleRec
::---judg VName is PAR1=? or specify

IF NOT %PAR1%==? (IF NOT %PAR1%==%1 GOTO Exit_ListSeleRec)

::---judg B_Name NEQ C_Name
IF NOT %B_VName%==INIT_VName (IF NOT %B_VName%==%1 CALL :Sum_List)

::---judg S-yyymm and E-yyymm-----
IF %SByyy:~0,5% NEQ %SEyyy:~0,5% ( set ERRym=## ERRyyymm
) ELSE ( set ERRym= )

::---List out correct rec.
echo * %1 %2 %3 %4 %5 %ERRym%>>Inquiry_Volunteer_time.txt

::---時數合計
SET /a VH=%4
SET /a VM=%5
SET /a SumH=SumH+VH
SET /a SumM=SumM+VM

::---Move %1 to B_VName
SET B_VName=%1

:Exit_ListSeleRec
rem pause 2.5 list exit -----
EXIT /B

::-----讀取志工名變化時,列印出時數合計
:Sum_List
SET /a SumM_H=0
SET /a SumM_H=(SumM * 10) / 60
SET SumM_H=%SumM_H:~0,-1%.%SumM_H:~-1,1%

echo --------------- Sum Hours: %SumH% %SumM% %SumM_H% %B_VName%>>Inquiry_Volunteer_time.txt
SET /a SumH=0
SET /a SumM=0
rem pause 3.5 sum list---------
EXIT /B

--------by linct---------

avatar-img
59會員
142內容數
樂趣體驗紀錄,沙龍房間有歌唱,生活,科技
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
linct的沙龍 的其他內容
本文介紹瞭如何使用BAT腳本和CMD指令來自動執行檔案和空目錄的刪除作業。通過設定各種參數和指令,可以快速、有效地執行定期刪除作業,節省硬體空間並提升工作效率。
本文詳細介紹Windows cmd指令的應用,並提供了例說明及追加說明,用戶可以學習如何使用cmd指令對檔案進行處理、選取所需的內容,以及擴展運用到其他類型的檔案,最後還介紹了cmd設計完成後的應用和自動化執行方式。
本文章介紹了CPU架構的三大類型:ARM、x86和RISC-V。著重介紹了它們的特點和市場應用情況,並提到了Nvidia採用RISC-V架構的發展經過,以及ISA的定義和重要性。
工具功能 (1) 彈性任意查詢檔案,如對來源目錄設定,檔案修改日期 設定,檔名特定字串或副檔名設定後,自動查出明細,並可展開至各階子目錄處理     (2) 依查詢後結果,可產出 LIST ,提供查詢結果之確認,再依此對檔案作複 (3) 可對檔案作移動,複製至別處,刪除處理,使電腦可騰出硬碟空間
設計功能             將整年份計畫事項,包含每月一次或每單月一次,每雙月一次之固定日期時,需要事先準備執行的事項,先一件一件記入在文字檔內,以便能該事件來臨前幾天,以LINE訊息自動發送出該事件內容給群組全員,讓全員可以事先接到通知,事先做好準備,才不會遺忘重要計畫事件     
Google 提供了免費的雲端服務 Google Apps Script (GAS) ,我們可以撰寫一些簡易的程式APP,串接其他 Google 雲端服務 如 Google Docs ,Sheets …,就能夠幫助我們利用雲端硬碟做日常工作
本文介紹瞭如何使用BAT腳本和CMD指令來自動執行檔案和空目錄的刪除作業。通過設定各種參數和指令,可以快速、有效地執行定期刪除作業,節省硬體空間並提升工作效率。
本文詳細介紹Windows cmd指令的應用,並提供了例說明及追加說明,用戶可以學習如何使用cmd指令對檔案進行處理、選取所需的內容,以及擴展運用到其他類型的檔案,最後還介紹了cmd設計完成後的應用和自動化執行方式。
本文章介紹了CPU架構的三大類型:ARM、x86和RISC-V。著重介紹了它們的特點和市場應用情況,並提到了Nvidia採用RISC-V架構的發展經過,以及ISA的定義和重要性。
工具功能 (1) 彈性任意查詢檔案,如對來源目錄設定,檔案修改日期 設定,檔名特定字串或副檔名設定後,自動查出明細,並可展開至各階子目錄處理     (2) 依查詢後結果,可產出 LIST ,提供查詢結果之確認,再依此對檔案作複 (3) 可對檔案作移動,複製至別處,刪除處理,使電腦可騰出硬碟空間
設計功能             將整年份計畫事項,包含每月一次或每單月一次,每雙月一次之固定日期時,需要事先準備執行的事項,先一件一件記入在文字檔內,以便能該事件來臨前幾天,以LINE訊息自動發送出該事件內容給群組全員,讓全員可以事先接到通知,事先做好準備,才不會遺忘重要計畫事件     
Google 提供了免費的雲端服務 Google Apps Script (GAS) ,我們可以撰寫一些簡易的程式APP,串接其他 Google 雲端服務 如 Google Docs ,Sheets …,就能夠幫助我們利用雲端硬碟做日常工作
你可能也想看
Google News 追蹤
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
在現代企業管理中,如何有效地處理各類工作任務與客戶需求,是提高整體運營效率的核心。工單系統,作為一種集成管理工具,已成為許多企業提升效率與服務質量的重要手段。
Thumbnail
數位化浪潮中,人資工作正在透過自動化工具變得簡單高效。自動化可以應用於入職流程、薪資和假期管理,並提供更多數據分析的可能性。
Thumbnail
其實流程不是不能改,只是考量要長遠、考慮周到。財會工作就是搜集、整理、統計、分析資料,不是只「記帳」而已,任何流程的建立都是為了能便於分析,快速找到問題。如果沒有意識到這一點,就是連自己也輕看自己的工作了。
第一個是統計分析表單優化 第二個是辦健康促進活動 第三個是反思計畫作業流程 第四個是主動出擊
Thumbnail
你是人資嗎?有沒有很常聽到主管這樣說「這週的班表可以幫我整理一下嗎?我馬上要,我要了解每個人上班的狀況。」但若是要花費大量時間手動輸入、整理,不僅費時費力,還容易出錯。眼看者時間一分一秒逼近,資料卻還沒統整完,真的會會崩潰到極點。教你一個技巧,讓你在1 分鐘內快速完成員工出勤表統計
Thumbnail
"好想準時下班 ヽ(`Д´)ノ " 相信這一定是許多社畜上班族的內心話。究竟要如何提高工作效率呢? 趕快往下看看吧!
Thumbnail
每個月都要花費大量時間製作薪資條,讓你加班到深夜?還在手動一個個輸入複製嗎?一起來學習如何使用 Excel 快速批量製作薪資條,讓你輕鬆完成工作,提高工作效率。這個技巧可以幫助以下不同職場工作者:人資人員:可以用來批量製作薪資條、獎金單、差旅費單等,提高工作效率。
Thumbnail
在日常工作中,我們經常會遇到需要計算工時和薪資的情況。例如,我們需要計算員工的工資、加班費等。如果我們使用傳統的方法,需要手動計算,這需要我們花費大量時間和精力。而使用這個技巧,我們可以直接在 Excel 中計算工時和薪資。這樣,我們就可以節省大量時間和精力,提高工作效率。
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
在現代企業管理中,如何有效地處理各類工作任務與客戶需求,是提高整體運營效率的核心。工單系統,作為一種集成管理工具,已成為許多企業提升效率與服務質量的重要手段。
Thumbnail
數位化浪潮中,人資工作正在透過自動化工具變得簡單高效。自動化可以應用於入職流程、薪資和假期管理,並提供更多數據分析的可能性。
Thumbnail
其實流程不是不能改,只是考量要長遠、考慮周到。財會工作就是搜集、整理、統計、分析資料,不是只「記帳」而已,任何流程的建立都是為了能便於分析,快速找到問題。如果沒有意識到這一點,就是連自己也輕看自己的工作了。
第一個是統計分析表單優化 第二個是辦健康促進活動 第三個是反思計畫作業流程 第四個是主動出擊
Thumbnail
你是人資嗎?有沒有很常聽到主管這樣說「這週的班表可以幫我整理一下嗎?我馬上要,我要了解每個人上班的狀況。」但若是要花費大量時間手動輸入、整理,不僅費時費力,還容易出錯。眼看者時間一分一秒逼近,資料卻還沒統整完,真的會會崩潰到極點。教你一個技巧,讓你在1 分鐘內快速完成員工出勤表統計
Thumbnail
"好想準時下班 ヽ(`Д´)ノ " 相信這一定是許多社畜上班族的內心話。究竟要如何提高工作效率呢? 趕快往下看看吧!
Thumbnail
每個月都要花費大量時間製作薪資條,讓你加班到深夜?還在手動一個個輸入複製嗎?一起來學習如何使用 Excel 快速批量製作薪資條,讓你輕鬆完成工作,提高工作效率。這個技巧可以幫助以下不同職場工作者:人資人員:可以用來批量製作薪資條、獎金單、差旅費單等,提高工作效率。
Thumbnail
在日常工作中,我們經常會遇到需要計算工時和薪資的情況。例如,我們需要計算員工的工資、加班費等。如果我們使用傳統的方法,需要手動計算,這需要我們花費大量時間和精力。而使用這個技巧,我們可以直接在 Excel 中計算工時和薪資。這樣,我們就可以節省大量時間和精力,提高工作效率。