• ベストアンサー

DOSコマンドで時刻判断を行いたい。

質問です。 DOSコマンドで、現在の時刻が 7:00 以前か以後かを判断し、処理を切り分けたいのですが、上手くいきません。 if 7:00:00.00 GTR %TIME% (echo a) else (echo b) このようなコードを書いています。 7:00 以前は、「a」 が出ます。7~9時までは「b」が出ます。 10時~23時までは「a」が出ますが、ここは「b」が出て欲しいです。 ただ単に時間の桁数がWindows のTIMEコマンドの使用で、9時以前は1桁でそれ以後は2桁かの違いだとはわかっているんですが、 どうやって回避したらよろしいんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • okg00
  • ベストアンサー率39% (1322/3338)
回答No.1

for /f "tokens=1-2 delims=: " %%A in ('time/t') do set hm=%%A%%B echo %hm% こうやればhmに4桁でセットされますが、コントロールパネルで時刻の表示を変更していない場合ですね。

関連するQ&A

  • DOSコマンドのループ内のTIMEコマンド

    DOSコマンドのループ内のTIMEコマンド ループの中で、少し時間のかかる処理を連続的に行ない、さらに時刻表示を行い 1回あたりの時間が分かるように表示したいと思っています。 下記のソースのイメージです。(極めてシンプルにしました) しかし、ループ内で実行するtimeコマンドがすべて同じ 時刻になってしまい、意図通りの動きになりません。 ループ内で、ループごとに異なる時刻を表示することは可能でしょうか? もしできるのであればその方法を教えてください。 よろしくお願いします。 @echo start◆%time% @FOR /L %%I IN (0, 1, 3) DO @( @echo %%I【%time%】 @ping localhost -n 2 > nul ) @echo end ◆%time% pause

  • dosコマンドで時刻修正

    net time コマンドの具体的な使い方がわからないです。 東北大の時刻サーバーでためしたところ、だめでした。 net time \\ntp.tohoku.ac.jp /set 正しいDOSコマンドの記述はなんですか。 ntpサーバー一覧です。 http://miyahost.no-ip.com/FreeSoft/NTPserver/ 桜時計とか使えばいいのですが、DOSでのほうほうも知りたいです。

  • DOS コマンドの~zfの意味を教えてください。

    以前、1M以上のファイルをコマンドを使って検索する、方法を教えていただきました。このコマンドで出てくる~zf の意味が分かりません。どなたか教えてください。コマンドは以下の通りです。for /R %f in ( * ) do if %~zf GTR 1000000 echo "%f",%~zf>>list.csv

  • DOSのコマンドでうまく処理が行えません

    下記のようなバッチ処理を行おうとしたのですが、なかなかうまく処理が行われず困っています。 FOR /F " %%J IN (A.TXT) DO (   SET ANS_SET=%%J   SET ANS_VAL=%ANS_SET:~0,3% IF %ANS_SET% == "SPC" (   ECHO テストA >> test.txt    ) else (    ECHO テストB >> test.txt    ) ) A.txtの内容 SPC1A1 SPC1B1 SPC2A1 SPC2B1 SPV1A1 SPV2A1 Aテストの頭三文字が"SPC"であれば、テストAの処理を、違う場合はテストBの処理を 行いたいのですが、すべてテストBの処理を行ってしまいます。 書き方がおかしいのでしょうが、どのように修正を行えばよろしいのでしょうか? %の使い方がいまいちわかりずらく困っています。 DOSの文法等、わかりやすいHP等あれば合わせて教えていただけませんでしょうか? 特に、例の構文がわかりやすく解説つきで書かれているものがあれば助かるのですが。 いろいろバッチファイルを作成していきたいのですが、なかなか例文つきのHPが 見つからなくて。 よろしくお願いいたします。 環境:Win2008serverR2

  • DOSコマンドを教えてください

    DOS(batファイル)で、コンピュータ名とIPアドレスを取得して、csvに吐き出したいのですが、 IPアドレスの取得ってどうすれば良いのでしょうか? ipconfigを使うとIP_Addressの次のsubnet_maskを取得しているように思えます。 今、私が作ってみたのは以下のコマンドです。 rem コンピュータ名取得 set my_computername=%computername% rem IPアドレス取得 for /f "skip=7 tokens=15" %a in ('ipconfig') do set my_ipaddress="%a" rem CSVファイル出力 echo %my_computername% , %my_ipaddress% >> sample_out.csv また、そのアドレスにもダブルコーテーションが付加されています。取ることはできますか? DOSコマンド自体、あまり知識がなく困っています。 方法がありましたら教えていただけませんか?

  • バッチファイルで常に最新の現在時刻を表示したい

    バッチファイルで最新の現在時刻を表示したいのですが、うまく行きません。 そのバッチファイル自体を実行した時刻ではなく、そのバッチファイル内のコマンド等を実行した時刻を表示させたいのです。つまりどんどん時間を最新に近いものに更新させていって欲しいのです。 タスクスケジューラのようなものをバッチファイルで作りたくて、現在時刻が○○時であればこのコマンドを実行する、といったことがしたい訳です。 バッチファイルは実行してすぐ終了するのではなく、そのまま常駐するような形を想定しています。 なにか良い方法はないでしょうか。 ■ 5秒おきに現在時刻を表示するバッチファイルの例 (同じ時刻になってしまう) @echo off :start set time=%time: =0% echo . echo . echo .「現在時刻は%time:~-11,2%時%time:~-8,2%分%time:~-5,2%秒です。」 echo . echo . ping localhost -n 5 goto start

  • DOSで秒数を表示する

    windows xpのdosで、秒数を含む現在時刻を表示のみする方法を教えてください。 timeコマンドだと秒数まで出るけど、新規に設定する時刻の入力待ちになってしまいます。表示のみできる方法を探しています。 用途は以下の通りです。 Cドライブのファイル(1GB)をDドライブにコピーするのに何秒かかるか転送速度を出すため、以下のようなbatを書きました。 time /tだと、分までしか表示できないので、使い勝手が悪いです・・・ copy.bat ------------------------- time /t cp c:\a.txt d:\b.txt time /t ------------------------- 以上、よろしくお願いします。

  • DOSコマンドのダブルクォーテーションの扱い

    DOSコマンドでダブルクォーテーションを検索し、 リダイレクションをすることが出来なくて困っています。 例えば findstr "\"!" a.txt は出来ますが findstr "\"!" a.txt >b.txt とするとリダイレクションが出来ません。 grepも同じようです。 またunixコマンドではシングルクオートは、「囲まれた中身をそのままの文字として利用」し、ダブルクオートは、「囲まれた中身に$HOME など $ で始まる文字列があれば、 それを環境変数、シェル変数といった、値に置き換えてから、利用する」という明確な違いがありますが、DOSコマンドでは明確な違いはあるのでしょうか? unixのshellをDOSコマンドに移植しています。 DOSコマンドの参考Webもあまり見つからなくて困っています。 もし参考になりそうなWeb等ありましたら教えてください。

  • あるデータベースの表を全部消すDOSコマンド

    まったく同じテーブル構造のデータベースを2つ用意してまして、 A:WEB画面表示用 B:更新用 とし、更新作業はBに対して行い、更新が一通りすんでから、Bの内容をAにコピーする、というやり方をしています。 そのコピーをするとき、 1.Bをエクスポートする 2.Aの表をすべて消す 3.BをAにインポートする というやり方をとっており、1と3はDOSのコマンドラインで行うことができるんですが、2はDOSコマンドでできないものでしょうか? この1~3の作業をまとめて行えるバッチファイルを作りたいのです。 それが無理なら、ほかにたとえばJSPなどの言語で1~3をまとめてWEB上でボタンをクリックすれば一気にやってくれるものを作ろうと思っております。 やり方をご存知の方がいましたら教えていただけないでしょうか。

  • DOSコマンドでのDIRコピー

    DOSコマンドでdirの階層構造を保持したままあるdirの下階層全てをあるdirの下へコピーするにはどのようにすればいいのでしょうか? 例えば、dir-aの下にdir-b1、dir-b2が存在している場合dir-aを全てdir-c の下へコピーしたいということです。(できれば1コマンドで)

専門家に質問してみよう