中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-23 14:46
47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,273 会员排行
DOS批处理 & 脚本技术(批处理室) » 幫忙縮短批次檔的內容或者優化
可打印版本  1,475 / 3
第1楼 dosfroum 发表于 2005-10-30 21:34
初级用户 发帖 54 积分 154
幫忙縮短批次檔的內容或者優化
請問下面的寫法 有辦法優化 或者縮短呢
這次我的寫法 要是想到有地方要修改的話 很麻煩 要一次修改很多行
現在只有10個做又 要是擴增到50個 可能會改到發瘋
所以請教有無簡短的寫法
但是要達到相同的效果喔
感謝



——————————————— Edited by willsort ———————————————
原标题:幫忙縮短批次檔的內容或者優化
为了方便广大用户的浏览和版主管理,请注意标题应该是对内容的提炼和概括
请楼主在标题中简要注明批处理的功用
——————————————— Edited by willsort ———————————————


[ Last edited by willsort on 2005-10-31 at 15:16 ]
第2楼 本是 发表于 2005-10-31 12:19
银牌会员 发帖 790 积分 2,227
试试这样改:

:Second
cls

:setupipnn
::for %%i in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31) set ipnn=ip%%i
for %%i in (32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51) set ipnn=ip%%i
::for %%i in (52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71) set ipnn=ip%%i

if not "%ipnn%"=="v" goto ipend
set ip=172.30.34.%ipnn%
set PCNnumber=IP0000%ip:~-2%
net use \\%ip%\ipc$ %pass% /user:"%name%" >nul
call remote.bat

:ipend
rem ***********************************************************
goto _ProgramList


另外,你的姓名是不是打错了?应该是DOS论坛dosforum吧!

[ Last edited by 本是 on 2005-10-31 at 12:24 ]
第3楼 willsort 发表于 2005-10-31 14:06
元老会员 发帖 1,512 积分 4,432
Re 本是:

兄的代码应该有些问题,for语句因缺乏do关键字会产生语法错误;同时,for只是单纯循环了set ipnn,而与以下的各句代码均没有关系。

Re dosfroum:

问题的关键在于 %ip33% 等环境变量的替换和引用,解决了这个问题,其他就都迎刃而解了。

以下是我的方案:方案一使用了for内嵌代码,必须启用变量延迟特性,因此 setlocal 一句是必要的;方案二使用了call子程序,call所产生的子环境具有“变量延迟”特性,因此其 setlocal 语句是可省略的,便于某些场合内的应用。

至于对类似 %ip33% 的引用,使用了二次转义的办法,即在调用echo一句时实现第一次转义,%%ip%%n%% ==> %ip33%;调用 call _calltemp.bat 一句时实现第二次转义,%ip33% 替换为所引用的字符串值。



第4楼 smileseeker 发表于 2005-11-01 23:04
中级用户 发帖 83 积分 316
for /l %%n in (33,1,84) do call:IPCheck %%n

原来还可以这样call:IPCheck %%n

学习ing。。。。。。

[ Last edited by smileseeker on 2005-11-1 at 23:05 ]
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023