在 BAT 文件脚本中,如果 FILE 不包含该行,则在 FILE 中添加新行
In BAT file script, add new line in FILE if FILE doesn't contain that line
我想在 hosts
文件中添加一行:
127.0.0.1 new-host
如果不包含此行。
在 windows
中使用 bat
脚本。
示例 1
脚本之前:
127.0.0.1 db
127.0.0.1 host
脚本后:
127.0.0.1 db
127.0.0.1 host
127.0.0.1 new-host
示例 2
脚本之前:
127.0.0.1 db
127.0.0.1 host
127.0.0.1 new-host
脚本后:
127.0.0.1 db
127.0.0.1 host
127.0.0.1 new-host
我的代码:
for /f "delims=" %%i in ('findstr /c:"new-host" "c:\Windows\System32\Drivers\etc\hosts"') do set actualLineHost=%%i
echo %actualLineHost%
if "%actualLineHost:"=.%"==".." (
echo empty
goto empty
) else (
echo not empty
goto notempty
)
findstr /c:"new-host" "c:\Windows\System32\Drivers\etc\hosts"
在命令行中工作正常 returns 什么都没有,但是当我 运行 一个脚本 "not empty" 当文件不包含行时
试试这个代码:
@echo off
findstr /m "new-host" C:\Windows\System32\drivers\etc\hosts
if %errorlevel%==0 (
echo Found!
) else (
echo No matches found
echo 127.0.0.1 new-host >> C:\Windows\System32\drivers\etc\hosts
)
pause
这将启动 findstr cmd 以在文件中搜索一个(或多个)定义字符串,在此之后,我们检查命令 return 是否错误,如果没有错误,我们回显到将行写入文件( >> 用于换行)
不使用的解决方案errorlevel
for /f "delims=" %%i in ('findstr /c:"new-host" "c:\Windows\System32\Drivers\etc\hosts"') do goto hostContains
echo 127.0.0.1 new-host >> c:\Windows\System32\Drivers\etc\hosts
echo "Not found"
goto exit
:hostContains
echo "Found"
:exit
我想在 hosts
文件中添加一行:
127.0.0.1 new-host
如果不包含此行。
在 windows
中使用 bat
脚本。
示例 1
脚本之前:
127.0.0.1 db
127.0.0.1 host
脚本后:
127.0.0.1 db
127.0.0.1 host
127.0.0.1 new-host
示例 2
脚本之前:
127.0.0.1 db
127.0.0.1 host
127.0.0.1 new-host
脚本后:
127.0.0.1 db
127.0.0.1 host
127.0.0.1 new-host
我的代码:
for /f "delims=" %%i in ('findstr /c:"new-host" "c:\Windows\System32\Drivers\etc\hosts"') do set actualLineHost=%%i
echo %actualLineHost%
if "%actualLineHost:"=.%"==".." (
echo empty
goto empty
) else (
echo not empty
goto notempty
)
findstr /c:"new-host" "c:\Windows\System32\Drivers\etc\hosts"
在命令行中工作正常 returns 什么都没有,但是当我 运行 一个脚本 "not empty" 当文件不包含行时
试试这个代码:
@echo off
findstr /m "new-host" C:\Windows\System32\drivers\etc\hosts
if %errorlevel%==0 (
echo Found!
) else (
echo No matches found
echo 127.0.0.1 new-host >> C:\Windows\System32\drivers\etc\hosts
)
pause
这将启动 findstr cmd 以在文件中搜索一个(或多个)定义字符串,在此之后,我们检查命令 return 是否错误,如果没有错误,我们回显到将行写入文件( >> 用于换行)
不使用的解决方案errorlevel
for /f "delims=" %%i in ('findstr /c:"new-host" "c:\Windows\System32\Drivers\etc\hosts"') do goto hostContains
echo 127.0.0.1 new-host >> c:\Windows\System32\Drivers\etc\hosts
echo "Not found"
goto exit
:hostContains
echo "Found"
:exit