atコマンドを使用して時間指定でpingを実行し、結果をファイルに書き込む方法

このQ&Aのポイント
  • コマンドプロンプトのatコマンドを使用して時間指定でpingを実行し、結果をファイルに書き込む方法について教えてください。
  • バッチファイルを使用すれば目的は達成できますが、コマンドラインのみではできないため、atコマンドについてモヤモヤしています。
  • リダイレクトのエスケープをやめるとファイルはできるものの、23:00になる前にファイルが作成され、atコマンドの結果がファイルに書き込まれます。
回答を見る
  • ベストアンサー

atコマンドでリダイレクト

お世話になります。 コマンドプロンプトのatコマンドを使い、時間指定をしてpingを打ち、その結果をファイルに書き込ませたいのです。 バッチファイルを使用してならでき、目的は果たせるのですが、コマンドラインのみでできないのでモヤモヤしてます。 例えば at 23:00 ping www.hoge.co.jp ^> test.txt とすると、23:00になってもtest.txtファイルがどこにも見当たりません。 リダイレクトのエスケープをやめると、ファイルはできるのですが、23:00になる前、コマンドラインを打ち込んですぐにファイルができてしまい、かつ「新しいジョブをジョブ ID = 1 で追加しました。」となり、atコマンド自体の結果がtest.txtに書き込まれてしまいます。 コマンドプロンプトについては、ほぼ初心者です。 atコマンドを使う必然性はないのですが、気になります。 宜しければ教えて下さい。 お願いします!

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

  • ベストアンサー
  • utakataXEX
  • ベストアンサー率69% (711/1018)
回答No.1

認識されているのかもしれませんが、まず、1点注意としては、atで実行されるリダイレクトの場所は、原則として C:\WINDOWS\system32 です。 話が面倒なので、test.txtは C:\test.txt とします。 エスケープを外した場合は、単に atコマンドの内容をリダイレクトしているだけですから、「新しいジョブを云々」が保存されてしまいます。 つまり、質問者様が試した、「リダイレクトのエスケープ」の観点は正しいのです。 しかし、 ping localhost ^> C:\test.txt とやってみればわかるように、これはコマンドエラーになってしまいます。 at 0:00 ping localhost ^> C:\test.txt でも同じ事です。 要するに「ping localhost ^> C:\test.txt」と言う文字列を実行したいのですから、この場合は、cmd /c を使います。 at 0:00 cmd /c ping localhost ^> C:\test.txt

negohara
質問者

お礼

早速のご回答、ありがとうございます! utakataXEX様のおかげで、望む結果を得ることができました。 早く金賞を献呈させて頂きたいのですが、できましたら補足にもお答え願えないでしょうか・・・? とにもかくにも、ありがとうございました!

negohara
質問者

補足

丁寧なご回答、誠にありがとうございます。 ここまで教えて頂いてさらに質問するのは恐縮ですが、cmd /cが必要な理由、これがあるとうまく行く理由を教えて頂けないでしょうか。 (cmd /c が、以下のコマンドを実行するコマンドであることは漠然とは理解しています。) よろしければ、お願い申し上げます。

その他の回答 (1)

  • utakataXEX
  • ベストアンサー率69% (711/1018)
回答No.2

>cmd /cが必要な理由、これがあるとうまく行く理由 cmd /? でヘルプが表示されます。 ↓ >/C "文字列" に指定されたコマンドを実行した後、終了します。 今回の例の場合、リダイレクトを即時ではなく、atに渡したいわけですから、とにかく「リダイレクトをエスケープしたコマンド群を文字列として渡す」事が必要なわけですね。 そして、標準のDOSコマンドで、「文字列を引数として受け取り実行するコマンド」は cmd /c(または /k)しかありません。 (厳密に言えば、FOR文でも可能ですが) 以上が使う理由、うまく行く理由です。 DOSコマンドは一部の例外を除き、ほとんど -? または /? スイッチを付加するとHELPが表示されます。 疑問に思ったら、聞く前にまず脊髄反射のように /? してみる事です。

negohara
質問者

お礼

よく分かりました。不束者に再度ご教授くださり、ありがとうございます! これからは/?した上で、なお分からない場合に質問致します。 ありがとうございました。

negohara
質問者

補足

utakataXEX様に金賞・銀賞を両方献呈したかったのですが、goo側の設定なのかできなかったので、残念ながら金賞のみとさせていただきました。 ありがとうございました。

関連するQ&A

  • Windowsコマンドプロンプトのリダイレクトについて

    宜しくお願いします。 Windowsのコマンドプロンプトで、 abcde /? > c:\textname.txt *abcdeはコマンド名 というようにコマンドの使用方法をリダイレクトで ファイルへ出力しようとしましたところ、 コマンドプロンプト上に出力されてしまい、 0バイトのファイルが生成されるだけです。 なぜでしょうか。 また、対処方法はありますでしょうか。 どうぞ宜しくお願い致します。

  • コマンドプロンプトのatコマンド

    コマンドプロンプトのatコマンドを使って、指定時刻にテキストファイルを表示するようにしたいのですが・・・。 at 22:50 /interactive /every:M,T,W,Th,F,S,Su "C:\Users\○○\test.txt" と、このように入力しても、指定時刻にテキストファイルが表示されません。 これは、何がいけないんでしょうか?

  • Windows 98系OSでのコマンドラインのリダイレクトについて

    Windows 98又はMeのコマンドラインのリダイレクトについて教えてください。 ◎やりたい事 Windows 98又はMeのコマンドラインの実行結果を正常・異常問わずにログ出力する。 ◎ためした事 ・「echo テスト > log.txt 2>&1」を実行 ⇒Windows 98又はMeで同じ事を実行すると'&1'というファイルができてその中身を見ると正常時のログしか出力されていません。また、log.txtは出力されていません。 ・「echo テスト > log.txt」を実行 ⇒実行結果が正常の場合は出力されるのですが異常の場合はコマンド画面に出力されてlog.txtに出力されません。 いろいろ検索したのですが解決に至っておりません。 よろしくお願いします。

  • コマンド結果のリダイレクト

    UNIXコマンドで「sar」がありますが、 その中のオプション「-o」を使用しないで ファイルにリダイレクトをしたいです。 なお、その際にバックグランドで実行しています。 sarコマンドは長時間動かし途中でリダイレクト結果をviewなどで見たいのですがどうしたらよいでしょうか? ex) sar 5 10000 > log.txt & これだと、sarコマンドが終了しないとlog.txtに出力されません。いつでもviewなどで最新のlog.txtを見たいです

  • コマンドプロンプトのバッチについて

    test01.bat >> YYMMDD結果.txt コマンドプロンプトのバッチ処理を実行結果をテキストで保存したいのですが、ファイル名を、 「YYMMDD結果.txt」と"YYMMDD"に本日の日にちを入れたいのですが、どのようにすればよいのでしょうか?

  • ATコマンドについて教えてください。

    はじめまして。今回はじめてWinNTで、ATコマンドを使ってスケジュールを 組もうと思っています。ATコマンドにバッチプログラムをわりあてて、やろうかと思っています。 例:at 09:00 ”c:¥aa.bat” aa.batの中身 copy ¥¥サーバー1¥*.* ¥¥サーバー2 と、バッチファイル内でコピーコマンドを動かそうかと思っています。 ところが、ローカルサーバー側(サーバー1側)は認識できるのですが、 リモートサーバー側(サーバー2側)は、ATコマンドで実行すると 「アクセスが拒否されました」とメッセージを出力します。しかし、 コマンドラインでは実行できます。 ATコマンドでネットワーク間のファイルコピーを可能にするにはどうすれば よいのでしょうか? よろしくお願いします。

  • Diskpart のリダイレクトの質問です

    コマンド プロンプト画面で Diskpart モード時の画面出力をリダイレクトしてテキスト ファイルに残したいのですが、上手く行きません。次のコマンドで Log.txt ファイルに画面出力がリダイレクトされるはずなのですが、記録が全く残りません。   Diskpart /s Script.txt > Log.txt 何度トライしても成功せず困っています。支援をお願いします。なお、テストのために使用した Script.txt ファイルは、次のようになっています。   List Disk   List Volume   Exit

  • cronでatコマンドがうまく動かない

    こんにちは。RedHat7.0のcronでatコマンドを動かそうとしています。 *********************************************** 00 14 * * * root at -f test.sh 14:30 2001-8-8 *********************************************** こんな感じで書いてあります。 このtest.shも、at -f test.sh 14:30 2001-8-8も、 単体では正常に動いてることを確認しています。 また、cron自体も正常に機能していて、 時間になるとatqでジョブが溜まっているのも確認できます。 var/log/cronでatコマンドが正常にキックされているのも 確認済みです。 でも、test.shの処理が実行できていないんです~。 単体では実行できているのに・・。 ちなみにtest.shの中身は ************************** #!/bin/bash date >aaa.txt ************************** という単純なものです。 crontabに書いた時だけファイルが出来ないのはどういう訳なのか 原因に心当たりのある方、アドバイスいただけないでしょうか。 宜しくお願いいたします。

  • バッチファイルで実行できたりできなかったり

    こんにちは。 バッチファイルとコマンドプロンプトについて、少々お伺いしたいことがあります。 まず、コマンドプロンプトで以下のコマンドを打ち込んでみたところ、すべて正常に実行することができました。 ping [example.com] > result.txt tracert [example.com] >> tr_result.txt ipconfig /all > ipc_result.txt 次に、各コマンドをテキストファイルに書き込んで、それぞれ "p_test.bat" # 内容は ping コマンド "tr_test.bat" # 内容は tracert コマンド "ipc_test.bat" # 内容は ipconfig コマンド と命名しデスクトップに配置、ダブルクリックで実行してみました。 すると、このうち正常に実行(結果をテキストファイルに出力)されたのは tr_test.bat のみでした。 ここで質問なのですが、なぜこのような違い(バッチファイルにすると実行できるものとできないものに分かれる)が起こるのでしょうか? バッチファイルの作り方やとコマンドプロンプトについて調べてみましたが、説明を見つけることが出来ませんでした。 この辺の理論について詳しい方がおりましたら、ご教示頂きたく思います。 ちなみに、OS は Windows XP SP2 です。 よろしくお願いいたします。

  • WindowsNT/2000のATコマンド

    代理でアップさせていただきました。 説明不足の点をご容赦頂き、下記の内容で判明、推測できる点、参考HP等をお教え頂けると助かります。 ---質問--- WindowsNT/2000でATコマンドを使用しています。 バッチファイルを起動しているのですが、バッチの中でパスが入っている 環境変数を使用しています。 コマンドラインから直接バッチを起動した場合と、ATコマンドにて起動 した場合とで、同じ環境変数項目のパスが異なっています。 ユーザーが異なっているためと思われますが、   通常:Administrator   ATコマンド:Default User ATコマンドで起動した場合もコマンドラインから起動した場合と同じ 状態にしたいのですが方法が判ったら教えて下さい。 尚、タスクを使うとユーザーが指定できるので問題なく動きます。 ---以上--- どうぞよろしくお願いいたします。