中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-12 23:20
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » 这样字符串怎么替换
可打印版本  703 / 2
第1楼 zcyzzzm 发表于 2010-01-09 17:12
初级用户 发帖 14 积分 36
这样字符串怎么替换
@echo off
setlocal enabledelayedexpansion

set "Space= "
set "PH_addr=%Space%Physical Address" %'/*-----物理地址-------*/%
set "IP_addr=%Space%IP Address" %'/*------IP地址(局域网)--------*/%
for /f "tokens=1,* delims=." %%i in ('ipconfig /all') do (
for %%a in (PH_addr IP_addr) do (
if "%%i"=="!%%a!" set %%a=%%j
)
)
Rem '/*===========对结果进行处理===========
set PH_addr=%PH_addr:*:=%
set IP_addr=%IP_addr:*:=%


set file="aa.txt"
for %%i in ("%file%") do set file=%%~fi
echo.
set "replaced=$cfg['Servers'][$i]['host'] = 'localhost'"
echo.
set "all=$cfg['Servers'][$i]['host'] = '%IP_addr%'"
for /f "delims=" %%i in ('type "%file%"') do (
set str=%%i
set "str=!str:%replaced%=%all%!"
echo !str!>>"%file%"_tmp.txt
)
copy "%file%" "%file%"_bak.txt >nul 2>nul
move "%file%"_tmp.txt "%file%"
start "" "%file%"

我本意是替换aa.txt中的

$cfg['Servers'][$i]['host'] = 'localhost'

为:

$cfg['Servers'][$i]['host'] = '61.191.56.15'

但是替换结果变成:

'localhost'=$cfg['Servers'][$i]['host'] = '61.191.56.15'= 'localhost';

请问怎么处理,另外批处理能够获取服务器的ip吗
第2楼 HAT 发表于 2010-01-09 19:25
版主 发帖 5,017 积分 9,023
批处理能够获取服务器的ip
第3楼 zcyzzzm 发表于 2010-01-09 19:56
初级用户 发帖 14 积分 36
Originally posted by HAT at 2010-1-9 19:25:
批处理能够获取服务器的ip


for /f "tokens=15" %%i in ('ipconfig ^| find /i "ip address"') do set ip=%%i
echo %ip%

ip获取是正确的,我要替换的字符串中含有“=”号,替换出现问题了

本意是替换aa.txt中的

$cfg = 'localhost'

为:

$cfg = '61.191.56.15'

但是替换结果变成:

'localhost'=$cfg = '61.191.56.15'= 'localhost';
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023