2014年02月04日

UWSCをバッチ化する方法



本日はちょっとマニアックな内容です。



■Windowsの操作を自動化する


以前の記事自動化するUWSCをご紹介しました。
この UWSC は、定型的な作業を自動化するのには、すごく便利なのですが、(当然ながら)拡張子が uws というスクリプトファイルが必要です。

Windowsの設定で、uws という拡張子の時には、uwsc を起動するようにしておけばいいのですが、パラメータを渡したいときには、これがネックになります。たとえば、

 あるフォルダ以下のフォルダ全てに対して、(その対象フォルダをパラメータとして)同じuwscスクリプトを実行したい

みたいな場合。
パラメータを渡すためには、スクリプトファイル中に、"パラメータを入力してください"みたいな入力ボックスを出すか、一旦コマンドプロンプトに降りて、

 (実行ファイルのあるパス)\uwsc.exe (スクリプトファイルのあるパス)\(スクリプトファイル名) (パラメータ)

のように入力してやらないといけません。これが結構面倒くさくて苦痛。
それとも、uwscの中に、指定されたフォルダ以下のフォルダを順番に検索していくようにプログラムを作成する必要があるのですが、構造が複雑になるので、作成するのがまた面倒。




■PERLの場合


自動化のために、私は PERL もよく使うのですが、PERLの場合は、perlスクリプトの場合は、スクリプトファイル自体をバッチファイル化のように偽装する方法がネットで公開されています。

★――――――――――――――――――――――――――
@rem = '-*-perl-*-
perl %~dp0\%0 %1 %2 %3 %4 %5 %6 %7 %8 %9
GOTO EXIT

@rem ';

※ここに perl スクリプトを書く

__END__
:EXIT
――――――――――――――――――――――――――★


みたいにすると、perl スクリプトをバッチファイルとして扱えるようになります。

そうすると、複数の対象に対して実行させたいときには、

★――――――――――――――――――――――――――
for /D %%i in (*.*) do perl %~dp0\%0 %%i
――――――――――――――――――――――――――★


のように書いておくと該当のフォルダ以下ですべてのフォルダをスクリプトに一括処理させることが出来るようになります。


■UWSCスクリプトをバッチファイル化する


で、本日の本題。

uwscスクリプトファイルをバッチファイルとして扱って、そのファイル中に書かれたuwscスクリプトを実行するような方法をご紹介します。

まずは答えから。

uwscスクリプトファイルの先頭に以下の部分を追加します。
ただし、

  (ワークフォルダ) :一時的にファイルを置くフォルダ(実在するならなんでもOK)
  (UWSCフォルダ)  :uwscの実行ファイル(拡張子exe)があるフォルダ

に置き換えてください。

★――――――――――――――――――――――――――
TextBlock BAT
copy /y %~dp0\%0 (ワークフォルダ)\x.uws
(uwscフォルダ)\uwsc.exe (ワークフォルダ)\x.uws %1 %2 %3 %4 %5 %6 %7 %8 %9
del (ワークフォルダ)\x.uws
EXIT
EndTextBlock
――――――――――――――――――――――――――★


たとえば、C:\Users\(ログイン名)\Music 以下のフォルダすべてを順番に uwsc で処理しようとしたら

★――――――――――――――――――――――――――
TextBlock BAT
copy /y %~dp0\%0 (ワークフォルダ)\x.uws
for /D %%i in (*.*) do (uwscフォルダ)\uwsc.exe (ワークフォルダ)\x.uws %%i
del (ワークフォルダ)\x.uws
EXIT
EndTextBlock
――――――――――――――――――――――――――★


とバッチファイルに書いておき、このファイルをパスの通ったフォルダにおいて、カレントフォルダを C:\Users\(ログイン名)\Music においた上で、このバッチを実行してやれば、スクリプトファイルにパラメータが渡るという寸法。

ただし、最初の

   TextBlock BAT

のところで、Windows(正確にはCMD.exe)が「こんな命令は知らない」と文句を言いますが、そこはご愛嬌。



■同じテーマの記事

forfilesの使い方

もう使わなくなったバックアップファイルは、削除しておくとハードディスクの容量にも、精神衛生にもちょっと良いかも。ただし、使う可能性のあるファイルを削除はしたくないので、一定期間以上編集しなかった、という条件で削除すると便利かと。これを実現するコマンドが forfiles。本日は、この forfiles の説明。パラメータ一覧FORFILES [/P パス名] [/M 検索マスク] [/S] [/C..

forfilesで古いファイルを処理する

PC は使っていると、もう使わないようなファイルが溜まっていきます。フォルダの同期・バックアップ方法4:FireFileCopyを使って履歴バックアップするバックアップに書いたように、私は自分が編集したファイルは全てファイルを履歴付きで別フォルダにバックアップを取っています。過去10年近くに渡ってファイルが残っています。さらに、自分でツールを作るので、そのデバッグやバックトレーサビリティのために、それらのツールは、結構な量のログファイルを作ります。特に、自動的にバ..

今日の仕事のゴール、言えますか?

ある長いプロジェクトだと、目標は上司や顧客から与えられます。しかし、仕事が遅い人というかギリギリまで放置しておく人のパターンとして、仕事が分解できないということがあるようです。与えられた仕事を今日のタスクにまで分解する分解の方法については、過去記事で書いてますので、そちらを参考にしてください。ピクニックに行くタスクの分割と自動化WBSを作るスケジューリングの7つのコツタスクの分割単位は大きくていい仕事効率を上げる基本ルールいろいろな手法があります。どのよ..

Windows10に入れる定番アプリ2

仕事の効率向上に欠かせないのが、PC のアプリケーション。これが使いにくいものだったり、ちょっとした誤操作でとんでもないトラブルを出すようなアプリだったら、イライラしますし手戻りも大きいので、これはしっかり選びたいですね。ということで、過去にも紹介してますが、Windows10も普及したことですし、Windows10向け、ということで現在のアプリ環境を再掲します。全てフリーソフト、Windows10動作確認済み(私の環境)。本日は昨日の続きで・オフィスアプリ・言語ツー..

ブックマークを管理する

IEだと「お気に入り」という名前ですが、他のWebブラウザだと「ブックマーク」。これを効率的に管理すると、仕事で必要な情報にわりと簡単にアクセスできるようになります。整理しない、検索するうまい管理のコツは、過去記事整理しないで検索するで書いたように、分類をしようとしないことです。「分類」という方法は確かにヒットすれば、非常に簡単に行き着くことができる方法なので有効ですが、分類の名称をキチンと決めておかないと、正しく処理できません。ですので、私は、ほとんどの情報の管..

打ち合わせ時間を決めるための打ち合わせ

何かを決めたいのだけれども、意思決定者がつかまらない、関係者のスケジュールが合わない。たいていプロジェクトの関係者が増えると、スケジュールが遅れる理由の隠れたトップがこれです。上司を捕まえるためのスケジュール上司と定期的に会う筆者には、上司と「直接あって話す時間」が必要です。いかに独立心の強い筆者でも、限界があります。上司とのミーティングをスケジュールすることは、大きな時問の投..

プログラミングを覚える

おそらく仕事のうち、かなりの時間はPCを使っていると思います。PCの操作が素早ければ、それだけ仕事の効率化ができます。そのためには、ブラインドタッチやキーボードショートカットなどを覚えるといいということを過去記事で何度か書いていますが、その最も効率の高いのは、PCに作業をさせることです。PCに、「これやっとけよ」と言ったら、やっておいてくれると、自分のする作業はほぼゼロになる。そのために必要なのは、PCにある作業の手続きを教えておくことです。世の中では、これをプログラ..

報告書のコツ:1回限りの報告書は作りたくない

多くの会社で「日報」「週報」という名前で、活動状況を報告する機会があると思います。この報告書、どう活用されているか分かりますでしょうか?あまり役に立ったという実感は薄いかもしれません。1回限りの報告書「日報」「週報」が導入された経緯は、たぶんですが上司が部下の活動をすべて把握しきれていないからです。で、宛先に部長まで含めて、「日報や週報を出すように」というお達しが出て、さらに「書いてあることがプア」とかいう過去の誰かの指摘に従って..

オートパイロットシステムを作る

毎日やる定形作業、とっても面倒ですよね。でも、以前の記事でも時々書いているように、効率化のネタはここにあります。つまり、かならず同じ作業をするものであれば、別に人間がやる必要はなく、機械にやらせてしまえばいいわけです。手っ取り早いのが、PC上でいつもやる作業。自動的に出勤登録をする私の会社では、出社してタイムカードに業務開始を登録するのにPCを使ってます。一人ひとりにPCが配布されているので、そこで特定のWebページにアクセス..

作業をモジュール化する

「モジュール」という言葉は、機能設計やプログラミングをやった人ならわかるでしょうが、もしかしたら知らない人も少なくないかも。モジュールモジュールとは、機能単位、交換可能な構成部分という意味の英単語。システムの一部を構成するひとまとまりの機能を持った部品で、システムや他の部品への接合部(インターフェース)の仕様が規格化・標準化されていて、容易に追加や交換ができるようなもののことを意味する。..



posted by 管理人 at 00:00| Comment(0) | TrackBack(0) | PCアプリ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック