バッチでpingやFTPが通らない時、ネットワークドライブにアクセスできない時だけ処理を行いたい

このQ&Aのポイント
  • Windows 2000/XPにおいて、バッチでネットワークの導通テストを行っています。pingやFTPが通らない時やネットワークドライブにアクセスできない時に、エラー表示を行い試験を停止させたいと考えています。
  • 現在使用しているバッチでは、ネットワーク上のPCにpingを打ち、その後、FTPを使用してファイルのコピーを行い、コピーしたファイルと元ファイルをコンペアしています。
  • 試験における条件判断についてアドバイスを求めています。Windowsのコマンド・バッチ処理に詳しい方、アドバイスをお願いします。
回答を見る
  • ベストアンサー

バッチで pingやFTPが通らない時、ネットワークドライブにアクセスできない時だけ処理を行いたい

Windows 2000/XPにおいてバッチでネットワークの導通テストを行っています。 その時に ネットワーク上のPCにpingを打つ  ↓ pingを打ったPC上からファイルをコピーする (FTP)  ↓ コピーしたファイルと元ファイルをコンペアする (FTPサーバーのフォルダをネットワーク共有し、 テスト元のPCにネットワークドライブとしてマウントする。 コンペアはfcコマンドを使用) といった内容のテストを行っているのですが pingやFTPが通らないときまたネットワークドライブにアクセス出来ないときに、エラー表示を行い試験を停止させたいと考えています。 これら試験における条件判断をどうやって行えば良いか分からないので アドバイスが欲しいです。 Windowsのコマンド・バッチ処理に詳しい方、宜しくお願い致します。 なお、今使っているバッチはだいたいこんな感じです。 実際にはログを取っています。 echo NOW TESTING... echo pingテスト中... ping 192.168.0.2 echo ファイルコピー中... ftp -s:ftpcommand.txt 192.168.0.2 echo 受信ファイルのコンペア中... fc /B /T z:\masterfile.dat copy.dat

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

  • ベストアンサー
回答No.1

ping の出力メッセージから find して、errorlevelを確認するとできるようです。

参考URL:
http://www.fpcu.jp/dosvcmd/bbs/log/lan/ping/4-0014.html
Yorisin
質問者

お礼

なるほど・・・。 少し試してみましたが、かなり使えそうです。 実際にテストで使ってみます。 ありがとうございました。

関連するQ&A

  • バッチファイルからftpを実行時に処理完了を待たない方法

    ある市販のjava系のアプリから時間起動でバッチファイルを起動します そのアプリは同時に複数のバッチファイルを起動できない仕様で ある外部プログラム(バッチファイル)を起動したら処理の完了を 待ってから次の処理バッチファイルを起動するのです 同時起動はできません なので最初に起動したバッチファイルがフリーズしてしまうと 次のバッチファイルが起動できずに永遠と待ち状態になってしまうんです そのソフトのメーカーに問い合わせしてみたのですが 呼び出し側はタイムアウトさせるような設定はない仕様なので 呼び出ししたプログラムのほうでタイムアウトするようにして下さい という回答でした なんとか回避しようと そのバッチファイルは ftp -s:c:\cmd.txt というようにftpコマンドを利用しているのですが (稀に何らかの原因でftpがフリーズしてしまう現象があります) ftpコマンドがフリーズしてしまったらどうしょうもないですよね・・・ この現象を回避したくて バッチファイルを start ftp -s:c:\cmd.txt exit に変更しました こうすればftpの完了を待たずにバッチファイルが終了するので たとえftpの処理が一つフリーズしてしまったとしても 別のバッチファイルの起動は問題なく行えると考えたからです しかしその市販アプリが内部的にどのようにバッチファイルを起動しているかわからないのですがテストしてみましたところ (ftpのコマンドをわざとquitしないようにして終了しないftp処理にして バッチファイルを起動してみたのです) 結果としては起動したバッチファイルが完了したとはみなしてくれず 次のバッチファイル起動ができないまま永遠に待ち状態になってしまいました・・・ バッチファイルからftpコマンドを別プロセスで起動する (ftpの完了を待たずにバッチファイルを終了させる) という事はできないでしょうか? アドバイスお願い致します

  • FTPのバッチファイル

    ローカルPCからサーバーのPCへ毎日決まったファイルをFTPで伝送したいと思っています。今はFFFTPで、毎日手動でファイルをアップロードしていますが、DOS窓からFTP接続するコマンドをバッチファイルにすることってできないのでしょうか? できれば、そのバッチファイルをタスクスケジューラーに登録して日々自動でアップロードしたいと考えています。 ftp open 接続先 ユーザーID パスワード put ファイル名 といった内容をバッチファイルにしたいのですが、やり方をご存知の方がいらっしゃいましたら、教えていただけないでしょうか?

  • バッチファイルでPINGログ取得

    バッチファイルでPINGのログを取得したいと考えています。 下記のバッチを作成して実行してみましたが @echo off set LOG=log.log echo "------------ START -------------" >> %LOG% ping -w 1 -n 1 localhost >> %LOG% 「プロセスはファイルにアクセスできません。別のプロセスが使用中です。」とエラーメッセージが延々と表示されます。 ログにはECHOで出力したSTARTしかありません。 コマンドラインから上記のPINGを打つと正常に終了します。 使用しているOSはWinXP SP2です。 何が原因なのか解決法をご存知の方がいらっしゃいましたら宜しくお願いします。

  • 連続でpingを実行するバッチファイルがうまくいきません。

    連続でpingを実行するバッチファイルを作成してたんですが、うまくいきません。 実行すると、"プロセスはファイルにアクセスできません。別のプロセスが使用中です。"って表示されます。 日付と時間はテキストに記載されるんですが、pingの結果が記載されません。 バッチファイルの内容は以下の通りです。 @echo off echo -------------->>d:\result.txt echo PINGテスト結果>>d:\result.txt echo -------------->>d:\result.txt echo 実行年月日 >>d:\result.txt date /T>>d:\result.txt echo 実行時間 >>d:\result.txt time /T>>d:\result.txt for /L %%f in (1,1,254) do ping -n 4 -w 50 192.168.100.%%f>>d:\result.txt exit コマンドプロンプトで、 for /L %f in (1,1,254) do ping -n 4 -w 50 192.168.100.%f>>d:\result.txt と実行すると、pingの結果がテキストに記載されました。 よろしくお願いします。

  • FTPの作業をWindows上のバッチでおこないたい

    こんにちは。Windowsは初心者です。 あるファイルを別のサーバーにFTP(PUT)したいと考えています。 コマンドプロンプトからFTPのコマンドをたたくのではなく なにかバッチファイル?のようなもので、中に一連のFTP処理を記述し バッチファイルを起動という形で処理を行ないたいのです。 バッチファイルの作成の方法がわかりません。 またFTPの記述の仕方がわかりません。あるファイルを別のサーバに FTP(PUT)したいだけなのです。またエラーも認知したいとも思っています。 どんな本を読めば分かりますでしょうか? また具体的なコード(バッチに記述するFTPのコード)を知っていましたら 教えて下さい。

  • バッチファイル処理

    バッチファイルの処理の処理速度についてどなたか教えてください。 ある同一のコマンドをよびだすのに、バッチファイル単体で実行する場合と、プログラムからCreateProcessで呼び出す場合の処理速度を比較したのですが、だいぶ異なります。 プログラムで呼び出したいのですが、処理速度が遅くて使いものにならないため、速度UPをしたいのですが、この違いはなにが原因でしょうか。 計測方法は以下です。 ●バッチファイル単体→バッチファイルの中で計測(1秒程度でおわる) ●プログラムからCreateProcessで呼び出し→WaitForSingleObjectでプロセスが終了するまでの時間を計測(10秒ぐらいかかる) それぞれのバッチファイルの中身は以下のとおりです。 (2つのVSSコマンドをコマンドラインから実行するものです) ●バッチファイル単体 ...省略 set time1=%TIME::=% set time1=%time1:~0,10% echo Start %time1% >> %fileLog% 2>&1 ss cp %project% -YAA,BB >> %fileLog% 2>&1 ss add %folder%\%fileAdd% -YAA,BB -I- >> %fileLog% 2>&1 set time2=%TIME::=% set time2=%time2:~0,10% echo End %time2% >> %fileLog% 2>&1 ●プログラムからCreateProcessで呼び出しているbatファイル ss cp $/test/ -YAA,BB ss add C:\Test\test.dat -YAA,BB -I- 2> C:\Temp\ErrorAdd.txt

  • windows2008でftpをバッチ実行する。

    windows2008サーバーでバッチファイルを作成しftpで複数ファイルを自動転送しようと思います。 今まで(OSはXP)はうまく実行していたのですが、windows2008サーバーではうまくいきません。 ちなみにバッチファイルは @echo off echo ●FTP処理 C:\Windows\System32\ftp.exe -s:d:\ftp\tohost.txt echo on @echo off echo ●終了 tohost.txtの内容は open 192.168.1.1 Uid Pwd bin put d:\ftpdata\a1.txt /afld/a2.txt bye です。 何かwindows2008による特別な方法があるのでしょうか? よろしくお願いいたします。

  • バッチファイル ネットワークドライブを作成

    いつもありがとうございます。 今、ネットワークドライブを作成するバッチファイルを作成(google検索でサンプルを頂いて)したのですが ネットワークドライブを作成するために、batファイル内に「ユーザ名」・「パスワード」を入力しておく必要があります。また入力したアカウントで参照先にログオンできてしまいます。 今回やりたいことは、ネットワーク作成バッチを実行したらネットワークドライブが作成され、アクセスする際にはユーザ名とパスワード入力の画面を表示させるようにしたいのです。 □環境---------------------------------------------------------- クライアント:Vista >参照先(1):\\192.168.0.1\aaa >ドライブレター:X:\ >参照先(2):\\192.168.0.2\bbb >ドライブレター:Y:\ ・ネットワークから\\192.168.0.1へアクセスする際は認証画面が表示される。 ・各ネットワークドライブ接続時に認証画面を表示する。 ----------------------------------------------------------------- いろいろなバッチファイルを試しましたが、ファイル内に「ユーザ名・パスワード」を入力しておかないと コマンドプロンプト画面で入力を求められ、ネットワークドライブが作成できません。 スクリプト作成の知識がなく困っております。 もし、参考になるURLやバッチファイルを作成できる方がいらっしゃいましたら ご教授頂けますでしょうか。 宜しくお願い致します。

  • バッチファイル(ネットワークドライブの割り当て)

    ファイルサーバ(NAS)を使用しています。 IPは192.168.100.100です。 その中にABCという共有フォルダがあります。 このファイルサーバは、常に電源が入っているわけではありません。 パソコン起動時にxドライブにABCを割り当てしたく、 下記のようにバッチを作成し、スタートアップに登録しました。 ------------------------------------------------------- @echo off @echo ABCをxに割り当て中 rem ネットワークドライブのドライブ文字 set DriveLetter=x: rem ネットワークドライブのパス set Mount=\\192.168.100.100\ABC net use %DriveLetter% %Mount% ------------------------------------------------------- 電源が入っている時は正常に動作するのですが、入っていない時は 固まってしまいます。これをなんとか回避したいのですが、どのよう な方法があるのでしょうか?

  • バッチ処理:フォルダ間ファイル移動を繰り返す

    フォルダ間でファイル移動を繰り返す処理を行いたいと思ってます。 例えば、 ファイル移動コマンド: move c:\TEST\*.dat \\192.168.1.5\TEST\ すべてのファイル移動完了後、逆方向にファイル移動: move \\192.168.1.5\TEST\*.dat c:\TEST この処理をバッチで繰り返したいのですが、すべて移動したことを確認して、逆方向に移動をする処理のやり方がわかりません。何かよい方法はないでしょうか。 コメント頂けると幸いです。

専門家に質問してみよう