IDEを使っていたため気づかなかったのですが
昨日のスクリプト...実行すると一瞬で消えますね
せっかく実行日が見やすいように考えたのに台無しです
ですので更新です
#!/usr/bin/python3.7
# -*- coding: utf-8 -*-
import datetime
import time
import sys, select
import subprocess as sp
#今日を取得
today = datetime.date.today()
print(today)
print("実行日を更新しますか?(y or no touch): ")
i, o, e = select.select( [sys.stdin], [], [], 10 )
if (i):
print("input", sys.stdin.readline().strip())
a = "y"
else:
print("no touch")
a = "n"
if a == "y":
global b
global f
b = input("何日後に設定しますか?: ")
print("実行日まであと{}日です".format(b))
f = open('jigensave.txt','w')
f.write(b)
f.close()
elif a == "n":
f = open('jigensave.txt')
for b in f:
b = int(b) - 1
print("実行まであと{}日です".format(b))
f = open('jigensave.txt','w')
f.write(str(b))
f.close()
#実行日を決定
future = today + datetime.timedelta(days=int(b))
#実行日から30日を取得(継続期間)
dur = future + datetime.timedelta(days=30)
#継続期間表示
for i in range((dur - future).days + 1):
jikkou = future + datetime.timedelta(days = i)
if today < jikkou:
print(str(jikkou) + ":実行予定です")
elif today > jikkou:
print(str(jikkou) + ":過去へ戻ることはできません")
elif today == jikkou:
print("実行しました")
#シェルコマンドを実行
cmd = "ls "
sp.call( cmd, shell=True )
print("実行日でなければ5秒後にソフトを終了します")
time.sleep(5)
こんな感じ
今回は実行日にシェルコマンドlsが実行されます
実行日でなければ5秒後に自動的に終了します
使い方(例)
- biosタイマーでpcの起動を設定
- スクリプトのデスクトップエントリーを作りスタートアップに登録しておく
- 初回起動は手動で実行し何日後にシェルコマンドを実行させるか入れておく
- スタートアップから起動されるとオートで”コマンド実行日まであと何日”が減ってゆく(これはスクリプトが実行されるとセーブテキストの”あと何日”の数字が減っていくようになっています。*更新のために手動実行した場合も減ってしまいますので内部処理2日前までに更新しないと手動実行でコマンドが実行されることになります(危険!)
- 実行日になるとコマンドを実行します
ツッコミどころ満載です(自動でパソコンの電源を切れるように設定しないと意味がないです^^)
まだまだ改良の余地があるのかどうなのかもわかりません
自分で使うだけなのならこれでいいようなきもしています
素人が趣味で作ったものですので使用の際は精査の上自己責任にてお使いください
このソフトを起動させておこったいかなるトラブルにも対処できませんのでよろしくおねがいします
0 件のコメント:
コメントを投稿