私はバッチスクリプトがジョブを正常に完了した後にリストから資産タグを削除しようとしています。コードブロック。findstrを使用して.txtファイル内の1行を削除する方法バッチ
FOR /F %%G IN (PingResults2.txt) DO (
@psexec -s -w C:\ \\%%G -c -f "USMTCAPTURE.cmd"
IF !errorlevel! equ 0 (
echo %%G >> usmtdone.txt
findstr /V %%G ToPingList2.txt > ToPingList2.txt
)
)
限り、私は自分のコードの一部が正常に機能しているが、それは私のループでこの行になるとき、それは単にファイル全体を一掃されて言うことができるように。
findstr /V %%G ToPingList2.txt > ToPingList2.txt
私がテストし、それが動作するはずのように私には見えます。 findstr /V %%G ToPingList2.txt
それはファイル内の他のすべての行のテキストを自己呼び出しし、私がfindstr /V %%G ToPingList2.txt >> ToPingList2.txt
をテストしたとき、ファイル内の他のすべての行を2度追加しました。だから、findstr /V %%G ToPingList2.txt > ToPingList2.txt
はファイル全体をきれいに拭くのはなぜですか?
おそらく、あなたが既にToPingList2.txtを読み込み用に開いているときに書き込むことを試みているからです。 'findstr'が完了したら、別のファイルに出力してから、' move/y newfile ToPingList2.txt> NUL'を試してみてください。 – rojo