- PR -

batファイルをタスクで実行するには

1
投稿者投稿内容
おぺのうと
常連さん
会議室デビュー日: 2005/08/16
投稿数: 33
投稿日時: 2009-04-14 20:29
或るアプライアンスに対してリモートでdfコマンドを
定期的に実行したい。
そこで、rshで下記の内容を実行すると正常に意図した
動作をしました。

ファイル名:C:\test.bat

--
set yyyymmdd=%yyyymmdd:/=%
set yyyymmdd2=%time:~0,2%%time:~3,2%
rsh 192.168.114.110 -l root:password df > c:\temp2\test%yyyymmdd%%yyyymmdd2%.txt
--

しかし、タスクスケジューラーに設定すると
Dos窓が一瞬表示されますが、ファイルが生成される
ディレクトリにファイルは生成されません。

%で囲んだ内容を更に、ダブルコーテーションで囲って
みたり、いろいろ試しましたが、正しく実行されません。

お手数ですが、正しく実行する方法について
何かしらアドバイス頂けましたら幸いです。
試験問題作成委員会
ベテラン
会議室デビュー日: 2009/01/04
投稿数: 54
投稿日時: 2009-04-15 15:14
http://itpro.nikkeibp.co.jp/article/COLUMN/20060912/247777/
うえのページの手順でタスクにbatファイルを登録すればよいと思う。
拡張子が.batまたは.exeになっていますか。
ひろ@ya
大ベテラン
会議室デビュー日: 2006/02/23
投稿数: 168
投稿日時: 2009-04-15 17:31
気になるところは2つですね。
1.タスクを実際に実行するユーザーに該当ファイルを作成する権限があるか
2.タスクを実際に実行する環境で、環境変数 yyyymmdd はどのようにセットされているのか
おぺのうと
常連さん
会議室デビュー日: 2005/08/16
投稿数: 33
投稿日時: 2009-04-16 12:06
試験問題作成委員会さん

コメントありがとうございます。

URL参考にしまして再確認しました。
拡張子は、batになっています。

ひろ@yaさん

コメントありがとうございます。

実行ユーザは、ローカルコンピュータのadministratorで
ログインして、ファイルの作成、temp2ディレクトリへの
書き込みができているので権限はあると思います。

yyyymmddについては、不思議なことに当初うまく動作していた
のですが、途中よりいきなり、動作しなくなりました。
下記のような結果となりました。

コマンドラインから、test2.batを実行した場合
(最初は成功していたのに、失敗しだした。)

C:\>test2.bat

C:\>set yyyymmdd=/=

C:\>set yyyymmdd2=1203

C:\>rsh 192.168.114.110 -l root:toyo3675 df =1203.txt 1>c:\temp2\test/
ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。

C:\>

何の影響がどこでどうなったのか不明なので、別の方法を
探しましたところ、変数は使用しない方法をネットで見つけ
まして、下記の方法で実行されるようになりました。

rsh 192.168.114.110 -l root:password df > c:\temp2\test%DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2%-%TIME:~0,2%-%TIME:~3,2%.txt

コメント頂きありがとうございました。
どうにか意図する動作となりましたので
ひとまずこれで様子を見たいと思います。

platini
大ベテラン
会議室デビュー日: 2002/12/03
投稿数: 193
投稿日時: 2009-04-16 12:25
解決したとのことで蛇足ですが、ひょっとしたらこういうことが原因?と思う
近しい現象に随分昔に遭遇したので、お知らせしておきます。

但し、今回の根幹的な肝心な部分は、
引用:

タスクを実際に実行する環境で、環境変数 yyyymmdd はどのようにセットされているのか


だと思うのですが、その部分が質問者より提示されていないので、推測の域を出ませんが。

【以前に出会った現象=このような原因が関係しているかも?】
同じくそれまで動作していたASP(ASP.NETではなくレガシーASP)が
急に動作しなくなったとの報告を受けた。

色々、原因を探ってみたところ、
ユーザがサーバに IEのSPバージョンを当てた結果、
(もう7年くらい前なので記憶が曖昧。OSのSPだったかもしれない)

コントロールパネルの
日付と時刻の設定における
長い日付の表現形式が
それまでyyyy/mm/dd形式だったのに、SPバージョン当てにより、
いつの間にかyy/mm/dd形式に内部変更されてしまった。

プログラム(VBScript)では、FormatDateTime関数で
FormatDateTime(Now(),vbLongDate)
で指定して、日付の情報を取得していたが(帰ってくる期待値をyyyy/mm/dd形式として)、
yy/mm/ddに関数の取得結果が陥ってしまったため、
エラーとなった。
おぺのうと
常連さん
会議室デビュー日: 2005/08/16
投稿数: 33
投稿日時: 2009-04-16 12:44
補足しますと、生成されるファイル名は下記のようになりました。

test2009-04-16-11-49.txt

おぺのうと
常連さん
会議室デビュー日: 2005/08/16
投稿数: 33
投稿日時: 2009-04-20 13:23
platiniさん

コメントありがとうございます。

なるほど、そういう事があったのですね。
今回は、WindowsUpdateや、SPの適用は実施
しておらず、稼働したままのXPで発生
しました。20時頃Dos窓で実施できてタスクに
仕込んで、テスト後に、再度Dos窓で実行したら
変数の値が正しく入らなくなってしまいました。
(一緒に端末を見ていた人も、なぜ?と感じていた。)

目的が「ファイル名に日時分を入れたい」という所から
検索したり調べたりして、変数に日時を入れているサイトを
見つけその内容にならって設定し当初は動作したのですが
最終的にはNGでした。

変数の定義は特に意図しておらず、最終的なたどり着いた
下記のやり方で希望する動作を実現できたので良しとしました。

rsh 192.168.114.110 -l root:password df > c:\temp2\test%DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2%-%TIME:~0,2%-%TIME:~3,2%.txt

コメントありがとうございました。
勉強になりました。
1

スキルアップ/キャリアアップ(JOB@IT)