祝日以外にWindowバッチを実行するプログラムを作りたい
| 登録日 | :2023/12/23 20:22 |
|---|---|
| カテゴリ | :Python基礎 |
pythonを用いて、土日祝日のリスト(ファイル)を自動生成して、土日祝日以外にWindowバッチを実行するプログラムを作成してみた。
土日祝日を判定するため、以下のライブラリをインストールしておく。
pip install jpholiday
このライブラリをつかって、土日祝日のリストを作成する。
参考サイト)
https://zenn.dev/shiro_toy_box/articles/724a601b208398
https://qiita.com/kodai100/items/f953e92d78f4ae345ee6
import os
import sys
import jpholiday
import datetime
from colorama import Fore, init
def print_day_off():
init()
now_year = datetime.datetime.now().year
date = datetime.datetime(now_year, 1, 1, 0, 0)
WEEKDAY = ('月','火','水','木','金','土','日')
for i in range(365):
date_str = date.strftime(r"%Y-%m-%d")
holiday = jpholiday.is_holiday_name(date)
# 曜日の取得
week = WEEKDAY[date.weekday()]
# 文字に色をつける
if week == WEEKDAY[-1]:
week = Fore.RED + week
elif week == WEEKDAY[-2]:
week = Fore.BLUE + week
# 祝日なのか(jpholiday.is_holidayでも可)
if holiday is None:
print(f'{Fore.RESET + date_str} {week}曜日 ')
else:
print(f'{Fore.RESET + date_str} {Fore.RED + week}曜日 {holiday}')
date += datetime.timedelta(days=1)
else:
print(Fore.RESET) # 色のリセット
def create_holiday_list():
filename = 'day_off_list.txt'
init()
now_year = datetime.datetime.now().year
date = datetime.datetime(now_year, 1, 1, 0, 0)
WEEKDAY = ('月', '火', '水', '木', '金', '土', '日')
with open(filename, 'w') as fp:
for i in range(365):
date_str = date.strftime(r"%Y-%m-%d")
holiday = jpholiday.is_holiday_name(date)
# 曜日の取得
week = WEEKDAY[date.weekday()]
if week == WEEKDAY[-1] or week == WEEKDAY[-2]:
print(str(date_str), week)
fp.write(str(date_str) + '\n')
# 祝日なのか
elif holiday:
# print_day_off(f'{Fore.RESET + date_str} {Fore.RED + week}曜日 {holiday}')
print(str(date_str), week)
fp.write(str(date_str) + '\n')
date += datetime.timedelta(days=1)
def is_holiday():
now_time = datetime.datetime.now()
date_str = now_time.strftime(r"%Y-%m-%d")
print(date_str)
holiday_file = 'day_off_list.txt'
with open(holiday_file, 'r') as fp:
holidays = fp.readlines()
for idx, holiday in enumerate(holidays):
holiday = holiday.strip('\n')
# print(idx, holiday)
if date_str == holiday:
print(date_str)
return True
def execute_bat():
cmd_file = 'hoge.bat'
argvs = sys.argv
argc = len(argvs)
command = cmd_file
for i in range(1, argc):
command += " " + argvs[i]
os.system(command)
if __name__ == '__main__':
# create_holiday_list()
# print(is_holiday())
if not is_holiday():
execute_bat()
else:
print('Holiday')
Windowバッチサンプル
@echo off
echo ".cmd Executed"
for %%f in (%*) do (
echo %%f
)
echo "Completed"