tracertコマンドsome ipを使用してトレースするバッチファイルを作成し、トレースをtxtファイルに書き込む必要があります。私はそれが速いので、すべてのトレース要求を一度に開始させるための新しいコマンドを各トレースに対して開始したいと考えています。バッチ - txtファイルをバッチで同期ロックする方法はありますか?
私ping.batがある:
@echo off
set saveUnrechableLocation=..\pingUnreachableInfo\pingUnrechableInfoDB.txt
set IpListLocation=..\ipInfo\all_DB_ip.txt
set reachableLocation=..\pingRechableInfo\RechableIp\pingRechableInfoDB.txt
set trace=..\pingRechableInfo\tracert\tracertDB.txt
set numberOfPings=1
@echo pinging DB > %saveUnrechableLocation%
copy /y NUL %reachableLocation% > NUL
copy /y NUL %trace% > NUL
for /F "tokens=*" %%A in (%IpListLocation%) do (
ping -n %numberOfPings% %%A | find "TTL=" >nul
if errorlevel %numberOfPings% (
@echo %%A not rechable >> %saveUnrechableLocation%
)
if not errorlevel %numberOfPings% (
@echo %%A >> %reachableLocation%
start trace.bat %trace% %%A
)
)
、そのように見えるtrace.bat:
@echo off
set saveLocation=%~1
set ip=%~2
tracert %ip% >> %saveLocation%
exit
問題は、私はこれを使用しようとしているとき、私は取得していますということですこの問題:
このプロセスは別のプロセスで使用されているため、ファイルにアクセスできません
この問題を解決するにはどうすればよいですか?ありがとう!
あなたの答えは大変ありがとうございます!私はそれのようなトレースvarに得ることができるか分からなかった。 ちょうど2つの簡単な質問: 1.トレースであなたはトレースを意味しますか?なぜなら私はvarという名前のトレーサを作成しなかったからです。 2.私はバッチを書くのにちょっと新しく、このラインは何をしていますか? "2> nul(タイプ%トレーサ%_%1.txt%トレーサ%.txt)" – Moshe9362
@ Moshe9362 - 1)おっと!はい、私はトレーサではなく、 "トレース"変数を書くことを意味しました。 2)更新された答えを参照してください。 '%=これはコメントです=%'に注意してください。私は文法エラーのバグを修正しました。何らかの理由で一時ファイルが存在しなかった場合、無限ループにつながるかもしれない難解なバグも修正されました。実際には – dbenham
は機能しません。 'tracertDB_10.0.0.1.txt'のようなファイルを作成しますが、プロセスの終了後にファイルを削除しなかったほか、tracertDB.txtにトレースをコピーせず、cmd-tracertコマンドを終了しませんでした。なにか提案を? – Moshe9362