我在批处理文件中尝试了这段代码,但它无法正常工作。 我想从DefaultGateway.txt获取第一行并替换NewFile.txt中的第三行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
答案 0 :(得分:1)
你的问题/例子遗漏了几个细节,所以我做了一些假设。批处理文件如下:
1-根本不创建DefaultGateway.txt,但采用相同的输出。
2-从该输出读取第一行,并将冒号后面的文本作为ipAddr。
3-阅读NewFile.txt的第三行,并将//和/之间的文本替换为之前的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^)
。为什么不在当前目录中创建此文件?它似乎只是一个辅助文件,对吗?
另一种可能性是将'ipconfig /all | findstr'
命令放在这个位置,这样就完全避免了辅助文件(就像我在程序的第一个版本中所做的那样)。