String 如何在指定字符串后通过CMD向文件中添加一行?
我有这样一个文件:String 如何在指定字符串后通过CMD向文件中添加一行?,string,windows,file,batch-file,cmd,String,Windows,File,Batch File,Cmd,我有这样一个文件: 192.168.123 hostname1 192.168.126 hostname2 192.168.125 hostname3 192.168.124 hostname4 我想通过CMD ex.hostname2搜索一个字符串,并在其后面添加一行,使其看起来像这样: 192.168.123 hostname1 192.168.126 hostname2 192.168.128 hostname5 192.168.125 hostname3 192.168.124 hos
192.168.123 hostname1
192.168.126 hostname2
192.168.125 hostname3
192.168.124 hostname4
我想通过CMD ex.hostname2
搜索一个字符串,并在其后面添加一行,使其看起来像这样:
192.168.123 hostname1
192.168.126 hostname2
192.168.128 hostname5
192.168.125 hostname3
192.168.124 hostname4
此外,所有这些都必须在原始文件中完成,而不是移动到另一个文件中
@echo off
setlocal
set "string=hostname2"
set "insert=192.168.128 hostname5"
for /f "tokens=1-2 delims= " %%A in (file.txt) do (
echo %%A %%B
if /i "%%~B" == "%find%" echo %insert%
) >> file.tmp
move /y file.tmp file.txt
变量string
是要查找的字符串。
变量insert
是要插入的新行
在与字符串的值匹配的行后插入
for
循环将每个读取行按空格分隔为2个标记。
第一个令牌将是IP地址(似乎缺少一个八位数字)
如果在当前读取行的第二个标记中找到字符串的值
,
然后插入insert
行
写入
file.tmp
后,该文件将替换file.txt
您尝试了什么?为什么需要在CMD中执行此操作?我尝试通过echo>文件添加它,但它会添加它和文件的底部,是的,我必须通过CMDfor/F“tokens=1,2”%%a in(input.txt)do(
NLecho%%a%%b
NL如果“%%b”eq“hostname2”echo 192.168.128 hostname5
NL)
注意,批处理文件不能同时读取和写入同一文件。