中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-09 12:58
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 判断 计算机名称 替换文件 查看 893 回复 11
楼 主 判断 计算机名称 替换文件 发表于 2008-08-27 04:09 ·  中国 山东 青岛 联通
中级用户
★★
积分 253
发帖 112
注册 2005-12-20 00:31
20年会员
UID 47500
状态 离线
计算机所在IP段192.168.0.1-192.168.0.150 计算机名称对应为a001-a150
a001-a060 把D:\A.TXT 改为OK.TXT
a061-a120 把D:\B.TXT 改为OK.TXT
a121-a150 把D:\C.TXT 改为OK.TXT

谢各位大侠指教
2 发表于 2008-08-27 08:47 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
ipconfig /all+for能得到IP

%USERDOMAIN%是计算机名称
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
3 发表于 2008-08-27 09:43 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
@echo off
if "%computername%" geq "a001" (
if "%computername%" leq "a060" (
ren "D:\A.TXT" "OK.TXT"
)
) else if "%computername%" geq "a061" (
if "%computername%" leq "a120" (
ren "D:\B.TXT" "OK.TXT"
)
) else if "%computername%" geq "a121" (
if "%computername%" leq "a150" (
ren "D:\C.TXT" "OK.TXT"
)
)
4 发表于 2008-08-27 09:51 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
要判断 机名和IP是否一致
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
5 发表于 2008-08-27 10:05 ·  中国 上海 宝山区 电信
高级用户
★★★
积分 916
发帖 377
注册 2004-03-08 00:00
22年会员
UID 19523
性别 男
状态 离线
.\psexec.exe -accepteula @..\iplist.txt -u username -p "passwords" -c rename.cmd

rename.cmd
ren d:\a.txt d:\ok.txt

如果你用psexec一切是不是简单多了,管理大批机器极力推荐psexec非常高效方便,节省时间,一切都是鼠标点点就OK
6 发表于 2008-08-27 10:29 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
@echo off
for /f "tokens=15" %%a in ('ipconfig^|findstr /i "IP"') do (
for /f "tokens=4 delims=." %%b in ("%%a") do set IP=%%b
goto :check
)
goto :eof
:check
if %IP% lss 10 (
if "a00%IP%" equ "%computername%" (
ren "D:\A.TXT" "OK.TXT"
)
) else if %IP% lss 100 (
if "a0%IP%" equ "%computername%" (
ren "D:\B.TXT" "OK.TXT"
)
) else if %IP% leq 150 (
if "a%IP%" equ "%computername%" (
ren "D:\C.TXT" "OK.TXT"
)
)
7 发表于 2008-08-27 13:03 ·  中国 上海 CNNIC会员上海电信节点
初级用户
积分 35
发帖 18
注册 2008-08-10 22:34
17年会员
UID 123138
性别 男
状态 离线
楼主的意思是好象远程对192.168.0.1-192.168.0.150 的电脑进行管理吧,代码如下(假设登录远程电脑的用户名都为administrator,口令都为1111):

@echo off
for /l %%i in (1,1,150) do (
if %%i leq 60 (set fname=A.TXT) else (if %%i leq 120 (set fname=B.TXT) else (set fname=C.TXT))
call :re_name %%i
)
pause
goto :eof

:re_name
wmic /node:192.168.0.%1 /password:1111 /user:administrator datafile "c:\\%fname%" call rename c:\OK.TXT


[ Last edited by shqf on 2008-8-27 at 01:09 PM ]
8 发表于 2008-08-27 16:18 ·  中国 山东 青岛 联通
中级用户
★★
积分 253
发帖 112
注册 2005-12-20 00:31
20年会员
UID 47500
状态 离线
谢过几位大侠,我用了都不是很理想

再次描述我的需求:
让此脚本在每台机器上开机运行,IP和机器名称是全部匹配好的,让不同IP段的机器看到不同的D:\OK.TXT
9 发表于 2008-08-27 16:57 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
6楼的代码是如何“不是很理想”的?详细描述一下?
开机运行的话,可能是计算机还没有来得及分配到IP,不知道你是不是这个问题。
10 发表于 2008-08-27 17:21 ·  中国 山东 青岛 联通
中级用户
★★
积分 253
发帖 112
注册 2005-12-20 00:31
20年会员
UID 47500
状态 离线
@echo off
for /f "tokens=15" %%a in ('ipconfig^|findstr /i "IP"') do (
for /f "tokens=4 delims=." %%b in ("%%a") do set IP=%%b
goto :check
)
goto :eof
:check
if %IP% lss 10 (
if "a00%IP%" equ "%computername%" (
ren "D:\A.TXT" "OK.TXT"
)
) else if %IP% lss 100 (
if "a0%IP%" equ "%computername%" (
ren "D:\B.TXT" "OK.TXT"
)
) else if %IP% leq 150 (
if "a%IP%" equ "%computername%" (
ren "D:\C.TXT" "OK.TXT"
)



谢谢hat ,这个可以实现,
11 发表于 2008-08-27 17:27 ·  中国 山东 青岛 联通
中级用户
★★
积分 253
发帖 112
注册 2005-12-20 00:31
20年会员
UID 47500
状态 离线
如果只判断计算机名称怎么做?谢谢,我很菜,正在学习中.
12 发表于 2008-08-27 17:40 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
3楼的就是只判断计算机名称
论坛跳转: