Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
27
Help us understand the problem. What is going on with this article?
@nomurasan

Windowsでcronみたいな事をやらせる

More than 1 year has passed since last update.

掲題の要望自体はタスクスケジューラを使えばできます。
ここではwindowsバッチで書いてますが、exeに引数渡していい感じに使えるならそうしましょう。

やりかた

windowsスタートメニュー
→全てのプログラム
 →アクセサリ
  →システムツール
  →タスクスケジューラ

タスクスケジューラライブラリ上で右クリックし、基本タスクを作成します。

1.名前。なんでもいいです
2.トリガー。見たままです。ここではテストをするので、リアルタイムに近い場所を設定しておきましょう。
3.操作。プログラムの開始→それぞれ設定します。デスクトップにショートカット張ってプロパティ設定して動いたらそれを入れてください。
4.実際に動くことを確認してください。
5.動くことを確認できたらトリガーを指定時間にします。

使用例

たとえば、お子さまにパソコンを使わせたいけど、時間を過ぎたら強制的に落として寝かせる、という運用を考えた場合、以下の運用をするといいです。

まずはお子さまがパソコンを使うためには、親がログインしてあげるという運用対処を行います。(ここでは説明を省略します)
次に強制的にマシンを落とすものを作りましょう。

shutdown.bat
shutdown -s -t 0

これは、実行すると即時シャットダウンをします。
動かすときは他のプログラムが起動していないことを確認してください。

念のため、テスト用のファイルを置いておきます。

test.bat
echo "実行完了"
pause

タスクスケジューラからtest.batのフルパスを設定して、実行完了が表示されれば成功です。
shutdown.batにパスを変えて、そちらも動くことを確認してみましょう。
(実行したらパソコンが落ちますので、他のアプリケーションは終了させておきます)

応用編

というか本編。
同じようにファイルを定期的にバックアップする仕組みを作っておきます。
gitとかsvnが出てる中でこんなアホな事をするのはどうなんだ?と思うんですが、サードパーティー入れられない環境もあります。
前時代的ではありますが、いつか困るだろうなので備忘録として残してます。

backup.bat
rem batで実行。powershellなり他のが使えるならその方がいい。
rem 宗教戦争になるが、よく分からない場合はperlオススメ

@echo off
if "%~1" == "download" goto download
if "%~1" == "upload" goto upload
exit

rem dateで取得する時にファイル名に使えないアレコレをYYYYmmddにする
set day=%date:~0,4%%date:~5,2%%date:~8,2%

set backupfromF="バックアップ元フォルダ"
set backuptoF="バックアップ先フォルダ"

rem バックアップ先を日付管理などで保存。いい感じに改変推奨
:download
mkdir %backuptoF%\%day%
xcopy /e %backupfromF% %backuptoF%\%day%
exit

rem バックアップ元に復元する。こっちは特に意識していない
:upload
xcopy /e %backuptoF%\%day% %backupfromF%
exit

注意、というか忠告

タスクスケジューラやcronでrmコマンドを実施するのは心底おススメしません。
renameとかmvで保持しておいて、本当に削除して大丈夫なのか、確認しましょう。

大事なことなのでもう一度

batでやるならshell系使える環境を作って、そっちでやった方がいいと、個人的には思います。
Windowsならpowershellとか、そういうのを使うと文字列処理などでぐぬぬする事が比較的少ないと思います。

[20171130] 別解 Windows Subsystem for Linux

この記事を見ている人はLinuxに慣れてる人だと思うので、こういうのはアリだと思います。
クライアントがWindows10 Pro版だよ~って人はこっちが断然オススメ!

アプリ屋がWindows Subsystem for Linuxで開発環境を作ってみた
https://qiita.com/nomurasan/items/95837a309f4bc8a0dbae

読了後いいね!をお願いします。

どれだけの方に読んでもらっているか知りたいので、お手数をおかけしますがご協力いただけると嬉しいです。

27
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
nomurasan
ノンプログラマーがシステムを作るには?を本気で考える元業務系Webアプリ屋系セキュリティデータサイエンティスト。 そろそろオートメーション・API(で)クリエイターになりたいおとしごろ。 https://www.slideshare.net/ssusered50fb 記事等は配属先やクライアント等の意見ではなく個人の考察によるものです。 一応念のため書いておきますが、無断での転載厳禁。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
27
Help us understand the problem. What is going on with this article?