• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:atコマンドでリダイレクト)

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

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