0

このコードをバッチ ファイルで試しましたが、うまくいきませんでした。DefaultGateway.txt から 1 行目を取得し、NewFile.txt の 3 行目の IP アドレスを置き換えたいと思いました。

バッチ ファイル コード:

ipconfig /all | findstr Gateway > "C:\Program Files (x86)\""Wireless Guard\""DefaultGateway.txt"
SetLocal EnableDelayedExpansion
type nul > NewFile.txt
set "Default" =Start Line of Paragraph
set "254"=End Line which is not Included
set Flag=0
for /f "tokens=* delims=" %%a in ('type DefaultGateway.txt') do (
if /i "%StartText%" EQU "%%a" (set Flag=1) 
if /i "%EndText%" EQU "%%a" (set Flag=0) 
if !Flag! EQU 1 echo %%a >> NewFile.txt
)

DefaultGateway.txt :

Default Gateway . . . . . . . . . : 172.20.128.254
Default Gateway . . . . . . . . . : 
Default Gateway . . . . . . . . . : 

NewFile.txt :

remarks:This document is for Linksys for version v4.30.5, the auto sensing part.
"C:\Program Files (x86)\Wireless Guard\wget" --http-user= --http-password=admin 
[this is not a link]http://192.168.1.1/WClientMACList.htm
REM del WClientMACList.txt
REM del arp.txt
REM del Intruder1.txt
copy WClientMACList.htm WClientMACList.txt
del WClientMACList.htm
REM del WL_ActiveTable.asp
REM do ping for 20 seconds
REM ping -n localhos
4

1 に答える 1

1

あなたの質問/例はいくつかの詳細を見逃しているので、私はいくつかの仮定をしました。以下のバッチファイル:

1- DefaultGateway.txtをまったく作成しませんが、同じ出力を取得します。

2-その出力から最初の行を読み取り、コロンの後のテキストをipAddrとして取得します。

3- NewFile.txtの3行目を読み取り、//と/の間のテキストを前のipAddrに置き換えます。結果はNewFile.newファイルにあります。

編集:私はいくつかの問題を修正しました...

@echo off
setlocal EnableDelayedExpansion
REM ipconfig /all | findstr Gateway > "C:\Program Files (x86)\""Wireless Guard\""DefaultGateway.txt"
for /F "tokens=2 delims=:" %%a in (DefaultGateway.txt) do (
   set ipAddr=%%a
   goto continue
)
:continue
set num=0
(
for /F "delims=" %%a in (NewFile.txt) do (
   set "line=%%a"
   set /A num+=1
   if !num! equ 3 (
      for /F "tokens=1-3 delims=/" %%b in ("%%a") do (
         set "line=%%b//%ipAddr:~1%/%%d"
      )
   )
   echo(!line!
)
) > NewFile.new

これは、上記のデータを使用してプログラムを実行した場合の結果のNewFileです。

remarks:This document is for Linksys for version v4.30.5, the auto sensing part.
"C:\Program Files (x86)\Wireless Guard\wget" --http-user= --http-password=admin 
[this is not a link]http://172.20.128.254/WClientMACList.htm
REM del WClientMACList.txt
REM del arp.txt
REM del Intruder1.txt
copy WClientMACList.htm WClientMACList.txt
del WClientMACList.htm
REM del WL_ActiveTable.asp
REM do ping for 20 seconds
REM ping -n localhos

FORコマンドでDefaultGateway.txtファイルの正しい(フルパス)名前を置き換える必要があることに注意してください。この名前にのように右括弧が含まれている場合は、次のよう(x86)に注意文字でエスケープする必要があります(x86^)。このファイルを現在のディレクトリに作成してみませんか?単なる補助ファイルのようですよね?

もう1つの可能性は、この場所に'ipconfig /all | findstr'コマンドを配置することです。これにより、補助ファイルが完全に回避されます(プログラムの最初のバージョンで行ったように)。

于 2012-05-17T18:55:42.503 に答える