• ベストアンサー
  • 暇なときにでも

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コマンドを使う必然性はないのですが、気になります。 宜しければ教えて下さい。 お願いします!

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数935
  • ありがとう数2

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

  • ベストアンサー
  • 回答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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

質問者からの補足

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

関連するQ&A

  • 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に書いた時だけファイルが出来ないのはどういう訳なのか 原因に心当たりのある方、アドバイスいただけないでしょうか。 宜しくお願いいたします。

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

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

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

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

その他の回答 (1)

  • 回答No.2

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

質問者からの補足

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

関連するQ&A

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

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

  • ATコマンドからエグゼファイルが実行できない

    こんにちは。 ATコマンドで毎日10:00時に一回、あるバッチファイルを起動させる登録を行なっています。 しかしバッチファイルからVBで作成したエグゼファイルが実行されていないようです。 エグゼファイル(Project1.exe)は今はテスト用で実行させますとWindowが表示されるだけです。DOSプロンプトから実行させるとWindowはちゃんと表示します。 ログファイルを意図的にはかせてますが、終わりのログがはかれているのでバッチファイル自体は実行されているようなのですが。 どういった原因なのかこころあたりある方よろしくお願いします。 起動するバッチファイル(testbat.bat)の内容 C: echo "start" >C:\test.log Project1.exe echo "end" >C:\test.log

  • ftpコマンドバッチファイルのリダイレクト結果

    以下のようなバッチファイルを作成しました ftp -s:ftpcmd.txt > ftplog.txt FIND /i "226 Transfer complete" ftplog.txt >NUL exit /b %ERRORLEVEL% ftpcmd.txt open hoge anonymous hoge prompt cd /xxxx/ put test.txt quit こうする事でftp送信が正常に終了したかどうかを exitの終了コードで判断しようとしていたのです バッチファイルを手動で動作させたところ成功です しかしこのバッチファイルを Webサーバのサーブレット(javaプログラム)から 動作させるとftplog.txtの出力結果がなぜか プログラムから実行した時のftplog.txt User (hoge:(none)): open hoge prompt cd /xxx/ put test.txt quit こんな結果になってしまうんです あれれ?ftpコマンドが出力するメッセージがリダイレクトされない んです 手動でこのバッチファイルを実行した時は 以下のようになります 226 Transfer complete. のメッセージがサーブレットからバッチファイルを実行しても ftplogファイルに出力されるように したいのですが 何かいい方法はないでしょうか? 手動実行した場合のftplog.txt ftp> Connected to hoge open hoge 220 Microsoft FTP Service User (hoge:(none)): 331 Anonymous access allowed, send identity (e-mail name) as password. 230 Anonymous user logged in. ftp> Interactive mode Off . ftp> prompt cd /xxx/ 250 CWD command successful. ftp> put test.txt 200 PORT command successful. 150 Opening ASCII mode data connection for test.txt. 226 Transfer complete. ftp: 59523 bytes sent in 0.00Seconds 59523000.00Kbytes/sec. ftp> quit 221

  • MSDOSコマンドでディレクトリ内をきれいにしたい

    DOSコマンドで複数のファイルとサブディレクトリをすべてどこかのディレクトリに移動するのと削除するにはどのようなコマンドになりますでしょうか? 複数行のバッチファイルにすることを想定しておりますので複数コマンドになってもOKです。 del,moveコマンドやrmdirだけでは対応できなそうなので、、、。 (1) C:\TEST\ C:\TEST\a.txt C:\TEST\b.txt C:\TEST\XXX\xxx.txt C:\TEST\YYY\yyy.txt を C:\TEST_NEW\ C:\TEST_NEW\a.txt C:\TEST_NEW\b.txt C:\TEST_NEW\XXX\xxx.txt C:\TEST_NEW\YYY\yyy.txt に移動したいのと (2) C:\TEST\ C:\TEST\a.txt C:\TEST\b.txt C:\TEST\XXX\xxx.txt C:\TEST\YYY\yyy.txt を C:TEST\ 内を空っぽにしたいです。 C:\TEST\ の中身は毎回変わり(上記a,b,XXX,YYY,xxx,yyyの名前が変わる)、(1)と(2)のバッチファイルを作って、ときどき C:TEST\をきれいにしたいです。

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

    こんにちは。 バッチファイルとコマンドプロンプトについて、少々お伺いしたいことがあります。 まず、コマンドプロンプトで以下のコマンドを打ち込んでみたところ、すべて正常に実行することができました。 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 です。 よろしくお願いいたします。

  • Vistaで、atコマンドが使えません。

    こんにちは。 Vistaで、atコマンドを使った、タスクスケジューリングができずに困っています。 例えば、管理者としてコマンドプロンプトを立ち上げ、 at 17:00 1.bat というコマンドを実行すると、 「新しいジョブをジョブ ID = 1 で追加しました。」 と表示されます。 その後、タスクスケジューラの「タスクスケジューラ ライブラリ」を見ると、 先程のジョブが、AT1という名前で、きちんと設定されています。 にもかかわらず、していした17:00になっても、1.batは実行されません。 1.batを、dirのような組み込みコマンドに変えても、実行されませんでした。 タスクスケジューリングに必要なサービスは全て起動しています。 具体的には、 DCOM Server Process Launcher Remote Procedure Call (RPC) Remote Procedure Call (RPC) Locator COM+ Event System System Service Notification Service COM+ System Application を、全て起動しています。 また、タスクスケジューラでのスケジューリングは、上手くいっています。 どうすれば、atコマンドを使う事ができるのでしょうか? 何か御存じの方がいらっしゃれば、是非、情報を提供して頂きたく思います。 では、よろしくお願い致します。

  • 出力のリダイレクトコマンド「>」で 日本語をリダイレクトする方法?

    Redhat Linux 9の環境で、「ls」、「less」のコマンドで日本語ファイル名をうまく表示しましたが、「>」で日本語をリダイレクトすることはなかなかできなかった。 下記のコマンドを試したら、、バイナリファイルになったらしいです。 echo "日本語" > test.log 誰かご教授いただければ、大変助かります。 よろしくお願いします。

  • Windowsのバッチファイルでcallコマンド時にログを残す方法について

    お世話になっております。 Windowsのバッチファイルについての質問です。 Windowsのバッチファイル内で、さらにバッチファイルをcallコマンドに よって、呼び出しているのですが、その呼び出したバッチファイルの logを残したいのですが、実装方法が分かりません。 # UNIXのscriptコマンドのようなコマンドがあれば実装できると # 考えたのですが、存在していないようです。 callコマンドは、リダイレクトorパイプが使えないらしいので、 以下のような記述だとlogを出力することができません。 call test.bat > test.log ご存知の方がいらっしゃいましたら、ご教示下さい。 以上、よろしくお願いいたします。

  • lha32 コマンドオプション

    ディレクトリごとバックアップを取るため以下のコマンドラインをバッチファイルに書いてあります。 lha32 a -rxm test.lzh d:\wwwroot\test\ 何故か圧縮するターゲットとなるディレクトリ内のファイル数とディレクトリ数よりも 圧縮後に展開したときの同じディレクトリ内のファイル数とディレクトリ数の方が少なくなっています。 原因が分りません。 もしlha32のコマンドオプションが間違っていたら教えていただけますでしょうか。 よろしくお願いします。

  • コマンドプロンプトで簡単にコマンドを実行するには

    コマンドプロンプトで簡単にコマンドを実行する方法を教えてください。 異なる二つのディレクトリの下にあるtest.txtというファイルを 同時に開きたいとします。 今現在は次の方法をとっています。 note d:\temp111\※\test.txt d:\temp222\※\test.txt という文をペーストして、※のところを書き換えて以下のようにしてから 実行しています。 note d:\temp111\333\test.txt d:\temp222\333\test.txt この333は444になったり555になったり・・・しょちゅう変わります。 333(444、555、・・・)を※に二回書き換えるのではなく、一回で 書き換えるツールはできますか?