質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Windows Server

Windows Serverとは、Microsoft社のサーバ用オペレーティングシステムの総称です。 企業内ネットワークなどで利用されるサーバ機へ導入することを想定して開発されているため高い安定性があり、 管理機能を提供するソフトウェアが多く含まれています。

Q&A

1回答

1989閲覧

Windows版HULFTのジョブ起動時の「%date%」と「%time%」の挙動に関して

rock_square

総合スコア14

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Windows Server

Windows Serverとは、Microsoft社のサーバ用オペレーティングシステムの総称です。 企業内ネットワークなどで利用されるサーバ機へ導入することを想定して開発されているため高い安定性があり、 管理機能を提供するソフトウェアが多く含まれています。

0グッド

0クリップ

投稿2023/04/05 06:17

編集2023/04/06 07:36

実現したいこと

ジョブ起動を行った場合もコマンドプロンプトと同じ様に、日付と時刻を取得したいです。
つまり
・コマンドプロンプト上で実行した場合
%date%→2023/04/03
%time%→15:14:39.67

・HULFTのジョブ起動した場合
%date%→2023/04/03
%time%→15:14:39.67
を実現したいです。

前提

Windows版のHULFTで構築および移行作業を行っています。
旧環境はオンプレ環境にてHULFT7で動いていましたが、新環境はクラウド環境を構築しHULFT8で稼働する予定です。

環境構築および設定の移行作業が終わり、各テストを進めている段階です。

発生している問題・エラーメッセージ

旧環境からバッチプログラムを持ってきて確認しています。この過程にて「%date%」と「%time%」でそれぞれ取得している日付と時刻が、コマンドプロンプト上で実行した場合と、HULFTのジョブ起動した場合とで異なることがわかりました。

具体的には
・コマンドプロンプト上で実行した場合
%date%→2023/04/03
%time%→15:14:39.67

・HULFTのジョブ起動した場合
%date%→04/03/2023 Mon
%time%→15:14:39.67 Mon
%time%→15:14:39.67
といったフォーマットで出力されました。

出力される内容が変わってしまうため、日付や時刻で処理制御される部分が正常に動かない状況となっています。

設定に関して

ちなみにこの部分に影響がありそうなWindows本体とHULFTの設定ですが
・Windows
地域 > 形式:日本語
日付と時刻の形式:
日付(短い形式):2023/04/03
日付(長い形式):yyyy'年'M'月'd'日'
時刻(短い形式):H:mm
時刻(長い形式):H:mm:ss
週の最初の曜日 :日曜日

地域 > 管理
Unicode対応ではないプログラムの現在の言語:日本語(日本)

・HULFT
システム管理 > システム動作環境設定 > グローバル
日付形式:YMD
HULFT動作言語:JPN
となっています。

試したこと

HULFTのサポートに問い合わせた所

HULFTには「%date%」および「%time%」の表示形式を変更するような設定がないため、弊社(HULFT側)では原因の特定が困難。
弊社環境でも動作確認を行ったが、事象は再現しなかった。
想定される原因としては、OSが提供している変数に特定条件下で"03/20/2023 Mon"形式で取得されるようになるといった動作が存在している可能性があるのではないか。
「%date%」および「%time%」変数自体がOS側で参照仕様を定めているものなので、弊社では上記の条件について回答することができない。

といった回答でした。

補足情報(FW/ツールのバージョンなど)

新環境OS:Windows Server 2022 Datacenter

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2023/04/05 07:06

「HULFTのジョブ起動」とは具体的にどのようなものですか? > 旧環境はオンプレ環境、新環境はクラウド環境 とあることから、少なくとも実行される環境の相違が、そのジョブ起動する部分にあるように思えます。
rock_square

2023/04/05 07:34

⇒「HULFTのジョブ起動」とは具体的にどのようなものですか? HULFTの処理に連動し、後続処理のバッチプログラムを指定し起動することができます。 HULFT処理→指定されたバッチプログラムの処理 という流れです。 今回、このバッチプログラムがコマンドラインで直接実行した場合と、HULFTで指定したジョブ起動で実行した場合とで「%date%」や「%time%」の値の出力が変わった…というお話となります。 ⇒少なくとも実行される環境の相違が、そのジョブ起動する部分にあるように思えます。 HULFTを経由するか否か、という部分になってくると思いHULFTのサポートに問い合わせた内容が、本文中に記載したもの(「試したこと」の内容)となります。
sazi

2023/04/05 08:23

旧環境ではHULFTを経由では無かったのですか? もしそうなら、経由しない事で解決するのではないでしょうか。 経由しているという事なら、「HULFT処理→指定されたバッチプログラム」では新旧で相違は無いのでしょうか?
rock_square

2023/04/05 09:21

⇒旧環境ではHULFTを経由では無かったのですか? ⇒もしそうなら、経由しない事で解決するのではないでしょうか。 ⇒経由しているという事なら、「HULFT処理→指定されたバッチプログラム」では新旧で相違は無いのでしょうか? 旧環境もHULFT経由での実行となります。 旧環境と新環境の違いは 旧環境 ・OS:Windows Server 2008 R2 Standard ・HULFT:ver.7 新環境 ・OS:Windows Server 2022 Datacenter ・HULFT:ver.8 となります。 バッチプログラム自体は、旧環境と新環境は同じものを使用しています。
sazi

2023/04/06 08:19 編集

単純なバッチファイルを作成して、hulft経由とそうで無い時で、%Date%の値を確認するとどうなっていますか? もし、相違するなら、その事実でHULFTに再度問い合わせしてみてはどうでしょうか。
rock_square

2023/04/07 00:48 編集

・コマンドプロンプトの場合 2023/04/06 ・HULFT経由の場合 04/06/2023 Thu で、相違していますね(昨日 同様の内容を確認していました)。 サポートへは別内容で問い合わせ中なので、その回答が返って来たら聞いてみたいと思います。 ありがとうございます。
sazi

2023/04/07 03:46

結局のところHULFT依存になってしまうなら、バッチ内で別変数に受け取って必要なフォーマットに変更する(※環境変数を弄ってしまうとその後のHULFTの処理影響するかもしれないので)のが確実だと思います。
guest

回答1

0

以下のバッチを実行してみましょう。

CMD

1echo %TIME% 2timeout 10 3echo %TIME%

2回の時刻表示の間で10秒変化していれば、%TIME%はCMD.EXEが現在時刻に変換しているので、何らかのWinodwsの設定の違いによる物と思われます。
もし同じ文字列が表示された時は、HULFTが環境変数TIMEに自分で特定の文字列をセットした上で、バッチファイルを起動しているので、HULFTの問題です。

まあ、解決策としては、現状を受け入れて文字列を切り出すのでしょうか。

CMD

1rem %date%→04/03/2023 Mon 2rem %time%→15:14:39.67 Mon 3 4set YYYYMMDD=%DATE:~6,4%/%DATE:~0,5% 5set HHMMSSTT=%TIME:~0,11%

投稿2023/04/05 10:28

otn

総合スコア86319

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rock_square

2023/04/05 11:33 編集

コメントありがとうございます。 対象のバッチをHULFTから実行したところ 19:51:02.89 19:51:12.13 となりました。 ということはWindows側の問題、ということになりますでしょうか。 コマンドプロンプトでの実行時と、HULFT経由での実行とで何が起こっているかがわかれば良いのですが。 解決策もありがとうございます。 ただ、対象のバッチが結構な数あるので、修正したくないというのが正直なところです。
otn

2023/04/05 11:58

なんと! てっきりHULFT側の原因かと思っていたのですが。 双方のバッチで、setコマンドの出力に違いはありますか? set > C:\aaa\env.txt あと、time/t と date/t の表示形式の違いとか。 cmd 起動時のコマンドラインの違いが無いかも念のために調べましょう。 WMIC PROCESS GET Caption,Name,ProcessId,CommandLine /FORMAT:LIST > C:\aaa\process.txt 心当たりは無いですが、何らかの違いを探すとしてこれくらいか。
rock_square

2023/04/06 11:03 編集

コメントありがとうございます。 setコマンドの違いですが ・コマンドプロンプトの場合  APPDATA=C:\Users\Administrator\AppData\Roaming  LOCALAPPDATA=C:\Users\Administrator\AppData\Local  TEMP=C:\Users\ADMINI~1\AppData\Local\Temp\2  TMP=C:\Users\ADMINI~1\AppData\Local\Temp\2  USERPROFILE=C:\Users\Administrator ・HULFTの場合  APPDATA=C:\Windows\system32\config\systemprofile\AppData\Roaming  LOCALAPPDATA=C:\Windows\system32\config\systemprofile\AppData\Local  TEMP=C:\Windows\TEMP  TMP=C:\Windows\TEMP  USERPROFILE=C:\Windows\system32\config\systemprofile  HULFT用の環境変数が追加されている(※) ※https://www.hulft.com/help/ja-jp/HULFT-V8/WIN-ADM/Content/HULFT_ADM/System/job_execution.htm 差異があった部分をピックアップしましたが、実行ユーザーがAdminかWindowsのSystemかの違いですかね。 これが日付の出力にどう影響しているかは不明ですが。 date/t と time/t は ・コマンドプロンプトの場合  2023/04/06  16:38 ・HULFTの場合  04/06/2023 Thu  04:52 PM となりました。 cmd 起動時のコマンドラインですが、若干違いましたが、ほぼ同じでした。 ただしこちらに関しては、どう見ればよいかあまりわかってません。。。
otn

2023/04/06 13:39

実行ユーザーが異なると言うことですね。 このあたりの設定はユーザーごとのはずなので、HULFTの実行ユーザーだと日時の形式が異なるのでしょう。 ・HULFTの実行ユーザーあるいHULFTから起動されるバッチの実行ユーザーを変更できないか? ・HULFT実行ユーザーの地域設定を変更する などでしょうか。 USERPROFILE=C:\Windows\system32\config\systemprofile というのは、特殊なユーザーだと思うので、ログインして設定変更できるのかどうかなどよくわかりません。 ログインせずとも、レジストリ書き換えで出来るのですかね?これもわからずですが、テスト環境があるならシステムバックアップを取った上で試してみるとか。レジストリでは HKEY_USERS\各ユーザー\Control Panel\International にあるようです。 新旧の環境で状況が異なる原因としては、 ・HULFTのバージョンにより実行するユーザーが異なる あるいは、 ・Windowsのインストール時の地域設定の違いにより、ユーザーのデフォルト値が異なってしまった とかですかね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問