中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-30 06:57
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » if 怎么根据机名来判断执行文件 查看 712 回复 2
楼 主 if 怎么根据机名来判断执行文件 发表于 2008-04-09 02:45 ·  中国 广东 茂名 化州市 电信
中级用户
★★
积分 396
发帖 183
注册 2007-12-23 06:24
18年会员
UID 106531
性别 男
状态 离线
if.bat

@echo off
::此脚本根据机名来执行文件,此为测试版,正式使用修改echo行命令
if exist run.vbs del run.vbs
for /f "tokens=1" %%i in (a.txt) do if %computername% equ %%i (goto a)else cls
exit
:a
echo msgbox "计算机名:%computername%",48,"警告">run.vbs
run.vbs
exit
:b
echo msgbox "列表没有此计算机名",48,"警告">run.vbs
run.vbs


辅助工具.bat
::此脚本创建机器名列表,所以运行上面批处理前先确定有此列表文件
for /l %%i in (1,1,9) do echo 00%%i>>a.txt
for /l %%i in (10,1,99) do echo 0%%i>>a.txt
for /l %%i in (100,1,250) do echo %%i>>a.txt



说明:脚本基本思路已经出来,问题是能否精简代码甚至提高脚本执行的效率
比如说:辅助工具.bat 内容改成如果数据为1位(1-9)就自动加00,如果数据为2位(10-99)就自动加一个0
2 发表于 2008-04-09 03:54 ·  中国 北京 华为云
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
18年会员
UID 99469
性别 男
状态 离线
@echo off
::此脚本根据机名来执行文件,此为测试版,正式使用修改echo行命令
for /f "tokens=1" %%i in (a.txt) do (
if %computername% equ %%i (goto a) else cls
)
exit
:a
mshta vbscript:msgbox("计算机名:%computername%",48,"警告")(window.close)
exit
:b
mshta vbscript:msgbox("列表没有此计算机名",48,"警告")(window.close)

for /l %%i in (1,1,250) do set num=00%%i&&call,echo %%num:~-3%%>>a.txt


[ Last edited by abcd on 2008-4-9 at 03:56 AM ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
jiulong +4 2008-04-10 07:19
3 发表于 2008-04-10 07:19 ·  中国 广东 茂名 化州市 电信
中级用户
★★
积分 396
发帖 183
注册 2007-12-23 06:24
18年会员
UID 106531
性别 男
状态 离线
第二条命令非常受用,我怎么就没想到~-3来提取最后三个字符呢。
第一条命令就可惜了。

例:100台机,1-33号机执行一条命令,34-66执行另一条命令,67-100执行与之前面不同的命令,且最好能抛弃过渡文件。
对FOR命令我有个疑问,就是循环处理的效率好像很低。
论坛跳转: