定期処理に応用できるかも/雛形から日付付きファイルへコピーしてそれをデスクトップにショートカットつくるまで自動化

この記事は 約7 分で読めます。

雛形ファイルからコピーしてデスクトップにショートカット自動作成
Windowsの話です。アクロバチックなルーチン作った話です。

製造業で働いてますが、ある事情から社内工程パトロールなんてことをやらなければならない羽目になりました。そんなものやってもやらなくても関係ないクズ職場なんですが、それについてはここでは多く触れません。

今回思いついたアイデアは工程パトロールするのにどうしたら忘れにくく「ハッ」やらねばって思い出せるかなあって考えて作ったルーチン処理です。

デスクトップに(仮に毎週)あたらしいショートカットファイルが出来ていたら「あ、これやらないといかんな」と思い出せるかなと思ったのです。

別にほかのやり方でもいいんですけど、なんとなくどうやっても面倒くさそうだった。工程パトロールチェックをするための雛形のEXCELシートファイルは既にあって、それに直接書き込むと名前を変えて保存とかしなきゃならないじゃないですか。それがまずメンドくせー。億劫です。

かといって今年専用のチェック用EXCELファイルにシートをどんどん増やしていくのもなにやら面倒くさい。とにかくあらゆる面倒臭さを排除して常にそこにあるファイルを開けば名前のついた最新のまっさらファイルになっていて書き込んで保存して、(仮に翌週)になったらまた新しいファイルがそこに用意されているという状況を作りたかったんです。

ここに行き着くまで実働7時間ぐらい、日数にしてのべ2日ぐらいかかりました。まあ時間のかからなかったほうではないかと思いますが、調べまくったこと著しい。ブラウザのタブが数え切れないほど溜まりました。

という前置きではありますがそんな機能ほしかったんだよ~という人以外はまったく無意味な内容かもしれません。

スポンサーリンク

雛形ファイルから日付付きファイルへコピーしてデスクトップにショートカットつくる自動化バッチ

原理なんてどうでもいいから使わせろって人むけにソース

そういう人いますか。ぼくも半ばそうです。くどくどした説明はいいからどこをコピペすればいいのかだけ教えろ!というタイプの人はこれを読んでくれ。

一応最低限の処理の流れを示します。

main.cmdGetIni.cmdファイル情報ファイル読み込み
csvファイル吐き出し
csvtab.exe(csvからタブ区切りテキストへ変換)
shortcut.wsf(ショートカットをデスクトップに生成)

まずはメインとなるバッチファイル。あとはこれを呼び出すタスクスケジューラーをセットするだけ、簡単でしょ。と言いたいところですが少しこまごました設定があります。でもまずは以下のバッチファイルがメインの呼び出し元になります。

▼INIファイルの中には以下の項目を入れておきます。
comment1〜5はコメントを書いているだけですので消してしまっても構いません。
DESTINATION_PATH_2=.xlsxというのはコピー先の拡張子で本来ならコピー元の拡張子が決まっていれば同じなのですが、それをプログラムで解析するのが面倒だったのでここで指定する形をとっています。スマートじゃないと思いますので誰かコピー元ファイルの拡張子部分だけ取り出す処理の仕方を教えて下さい。

 

▼続いてはINIファイルから項目を読み込むサブルーチンとして使うバッチファイル。INIファイルを作っておいて個別情報を入れておけば汎用的に使うことができます。つまり貴方だけでなく誰か他の人も業務で利用させてあげることが容易になります。内容についてはぼくはまったく理解できませんですがコピペして保存するだけですぐ使えます。

さきほど申しましたようにこのバッチファイル(GetIni.cmd)はなんの手も加えていないコピペです。
参照サイトはiniファイルを読み込むbatファイルの作り方。今の時代でも充分役に立つゾ!(タブンね・・・) | Gabekore Garageです。ありがとうございます。

▼そして任意の場所にあるファイルからデスクトップにショートカットを置く処理はこちらを参照しました。万一参考サイトの記事が消えてしまったときのためにコードを掲載させていただきます。

@IT:Windows TIPS — Tips:デスクトップ上に必要なショートカットを自動生成する

あとはcsvtab.exeというのをネットから探してきて任意のフォルダーにインストール(置くだけ)すること。
CSVファイルTABファイル変換プログラムの詳細情報 : Vector ソフトを探す!

INIファイルの取り込みと変数への格納

では1つずつ処理を解釈していきます。あとで自分で読み返して再利用できるように丁寧に書くつもり。
iniファイルを読み込むbatファイルの作り方。今の時代でも充分役に立つゾ!(タブンね・・・) | Gabekore Garage
GetIniというバッチファイルを作られた方がいたようですが、まさかバッチファイルだけで.iniファイルの項目を読めるとは知りませんでした。こういうことができるといろいろと応用範囲が広がりそうです。

ここのINIファイル取り込みではmake_shortcut.iniというファイルに書いてある固有のフォルダ情報などを読み込みます。フォルダ名やファイル名にスペースが入っていても大丈夫そうです。おそらく改行までが一つの情報の塊として認識されるんじゃないかな。

日付取得してスラッシュ(/)除去→変数へ格納

ここの部分は文法を調べればわかるのですが、どこかの親切なサイトからもらってきてそのまま使ってます。記事を書く今になって探したらもっと簡単な記述が見つかりました。
バッチファイルで今日の日付 (YYYYMMDD 形式) を取得 – アジャイルプログラマの日常

雛形からデータフォルダへコピー

ここの1文は単純にGetIniで取り出した情報をくっつけてコピーコマンドのパラメーターを作っているだけです。

文法は今さらですが、
copy コピー元 コピー先

ファイルの最後に改行が入らないようにする呪文

▼タブ区切りファイルを生成するときに最後に改行なのかスペースなのかわからないものが混ざってしまって上手く動かないときがあったので、ファイルの最後に改行が入らないようにする呪文を調べて入れました。実際にはいらないかもしれませんし結局改行が入ってしまってます。スペースの除去は次の行でechoをファイルにリダイレクトするときスペースをつけず密着させて記述したら解決しました。

CSV型式の定義ファイルへ吐き出し

本当はここで項目がタブで区切られたテキストを直接生成したかったのですが、どうにもタブ文字がテキストファイルに吐き出せなくて仕方なく「,(カンマ)」区切りのファイルを作ってます。

echoコマンドでパラメーターの順番はショートカット名,ショートカットのコメント,ショートカットの元ファイルのパス,ホットキー

コメントとホットキーは省略できますが区切りは必要です。

CSV定義ファイルからタブ区切りのテキストへ吐き出し

CSV形式のファイルからタブ区切りのテキストへ変換またはその逆変換をしてくれるフリーソフトを見つけたのでこれを活用させてもらいます。
CSVファイルTABファイル変換プログラムの詳細情報 : Vector ソフトを探す!

 

定義ファイルを元にコピーされたファイルからデスクトップへショートカットを作る

これもググっていたら実に便利なスクリプトを作って紹介しているサイトがあったので活用させてもらいました。

@IT:Windows TIPS — Tips:デスクトップ上に必要なショートカットを自動生成する

タイマーで定期的に実行するために

もし社内ネットワークを利用しているとしたら仮想ドライブを割り当てておいたほうが良いかもしれません。すみませんが¥¥指定のネットワークパスですべていけるか未確認です。

▼ただ気をつけることはバッチファイルやスクリプトファイル、またcsvtabというexeファイルを実行するのにそれらの実行ファイルが必ず意図したフォルダに生成してくれるか不安なので一応ぼくはその実行する一連のファイル群を置いた場所にYドライブと名付け、タスクスケジューラーでの開始オプションでY:と指定しました。ただしこれをやらないとちゃんと動かないかという検証はしていません。
タスクスケジューラーでの注意

まとめ

わかりにくい部分もあるでしょうし、コード内にechoなんて入っていて標準出力に出す命令が残っている箇所もありますが、適当に改造してください。

たぶんこの記事に行き着いた人はそれくらいの読解力は持ち合わせていると思います。

いやーバッチファイルって面白いですね。昨今のコンピューターの動きはすべてウィンドウを開いてダイアログによる命令ばかりですが、こうしたコマンドの羅列による動きって自動化させてるぜ!って感じでアゲアゲです。

この記事が気に入ったら
いいね!しよう
最新情報をお届けします。
Windows
チャリパカ(semiboze(半禿)のブログ)