中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: FOR命令疑问 上一主题 | 下一主题
YoDe
中级用户




积分 224
发帖 102
注册 2007-11-9
状态 离线
『楼 主』:  FOR命令疑问

if exist ipconfig.txt del ipconfig.txt ipconfig /all >ipconfig.txt if exist phyaddr.txt del phyaddr.txt find "Physical Address" ipconfig.txt >phyaddr1.txt for /f "skip=2 tokens=12" %%M in (phyaddr.txt) do set Mac=%%M if exist IPAddr.txt del IPaddr.txt find "IP Address" ipconfig.txt >IPAddr.txt for /f "skip=2 tokens=15" %%I in (IPAddr.txt) do set IP=%%I arp -s %IP% %Mac% 问下for /f "skip=2 tokens=12" %%M in (phyaddr.txt) do set Mac=%%M 和for /f "skip=2 tokens=15" %%I in (IPAddr.txt) do set IP=%%I 是否%%M="tokens=12"之后的单位 其中的%%M和%%I能否换成%%Q之类的 是否系统自定义%%M为什么意思 本人DOS菜鸟 求助高手解答 还有一事请教各位大侠。现在DOS书籍没有 有的也是基本的 我都会 什么《DOS大全》啊也没看过不知道里面写着什么东东 现在也没得买 想买书是不可能了 本人初中毕业 不晓得一些专业术语 比如什么是反转定义之类的 不知如何学起DOS 等待解答


2007-11-16 23:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 2 楼』:  

%%M 也可以是别的,这完全取决于个人的兴趣爱好,就像你定义一个变量名一样,即自由又有限制。。。可以定义成%%a、%%b、%%A、%%Z,甚至可以是符号,比如%%#、%%[、%%]等等。。 关键是do后面的%%变量,要和in之前定义的%%变量一致就成了。
for /f "skip=2 tokens=12" %%M in (phyaddr.txt) do set Mac=%%M


2007-11-17 00:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
YoDe
中级用户




积分 224
发帖 102
注册 2007-11-9
状态 离线
『第 3 楼』:  

谢谢lxmxn 斑竹, 当我发出这篇帖子的20秒之后我已经明白了, 但不知/F是何意思 请解释的通俗点 FOR 变量是单一字母、分大小写和全局的;而且, 同时不能有 52 个以上都在使用中。 请问什么是不能用52个以上都在使用中 运行这个批处理将会得到如下两个文件 tokens=12 其中没有delims= 是否是说以第一个字母单位如Physical开始计算 每格一个空格为分隔符。其中不填delims是否就是说以空格为分隔符 那么如何换成* 其“*”仅仅是代表*作为分隔符吗? ---------- IPCONFIG.TXT Physical Address. . . . . . . . . : 00-10-5C-C8-08-67 Physical Address. . . . . . . . . : 00-53-45-00-00-00 ---------- IPCONFIG.TXT IP Address. . . . . . . . . . . . : 192.168.1.8 IP Address. . . . . . . . . . . . : 125.127.9.69 至于下面我就不太明白了 另外,FOR 变量参照的替换已被增强。您现在可以使用下列 选项语法: ~I - 删除任何引号("),扩充 %I %~fI - 将 %I 扩充到一个完全合格的路径名 %~dI - 仅将 %I 扩充到一个驱动器号 %~pI - 仅将 %I 扩充到一个路径 %~nI - 仅将 %I 扩充到一个文件名 %~xI - 仅将 %I 扩充到一个文件扩展名 %~sI - 扩充的路径只含有短名 %~aI - 将 %I 扩充到文件的文件属性 %~tI - 将 %I 扩充到文件的日期/时间 %~zI - 将 %I 扩充到文件的大小 %~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩充 到找到的第一个完全合格的名称。如果环境变量名 未被定义,或者没有找到文件,此组合键会扩充到 空字符串 可以组合修饰符来得到多重结果: %~dpI - 仅将 %I 扩充到一个驱动器号和路径 %~nxI - 仅将 %I 扩充到一个文件名和扩展名 %~fsI - 仅将 %I 扩充到一个带有短名的完整路径名 %~dp$PATH:i - 查找列在路径环境变量的目录,并将 %I 扩充 到找到的第一个驱动器号和路径。 %~ftzaI - 将 %I 扩充到类似输出线路的 DIR 在以上例子中,%I 和 PATH 可用其他有效数值代替。%~ 语法 用一个有效的 FOR 变量名终止。选取类似 %I 的大写变量名 比较易读,而且避免与不分大小写的组合键混淆。 望斑竹讲解 我想搞懂了这些 我也算是DOS入门了吧?


2007-11-17 01:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
YoDe
中级用户




积分 224
发帖 102
注册 2007-11-9
状态 离线
『第 4 楼』:  

如果关闭这个批处理再手动运行另一个批处理变量是否还是存在


2007-11-17 01:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 5 楼』:  

多看看for的帮助吧,这要讲也不是一时半会儿能讲玩的。 关闭一个批处理之后变量就没了,除了系统的环境变量。。。


2007-11-17 04:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
YoDe
中级用户




积分 224
发帖 102
注册 2007-11-9
状态 离线
『第 6 楼』:  

不好意思我没说清楚 我说的就是系统的环境变量……是否会保存我知道有个SETlocal 和ENDLOCAL好像这两个英文是这样写的 如果这两个都不写 系统默认是改变环境变量吗?


2007-11-17 10:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 7 楼』:  

不会改变。


2007-11-17 21:01
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
YoDe
中级用户




积分 224
发帖 102
注册 2007-11-9
状态 离线
『第 8 楼』:  

谢谢lxmxn斑竹,那么 在SETlocal 是不是就保存在系统里?


2007-11-19 00:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 9 楼』:  

Re YoDe: 在命令行调用批处理脚本时,如果使用了setlocal,那么setlocal只是使当前批处理设置的变量在批处理程序内有效,批处理运行完了之后,变量不会影响调用此批处理的命令行。 当运行了一个带有Setlocal命令的批处理脚本之后,批处理末尾如果没有Endlocal命令,默认隐含一个。所以一般只写一个Setlocal就行了,Endlocal可以不要。 有时间多看看setlocal命令的帮助文档吧。


2007-11-19 00:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
YoDe
中级用户




积分 224
发帖 102
注册 2007-11-9
状态 离线
『第 10 楼』:  

那如果不使用setlocal 当前批处理设置的变量在批处理程序内会怎么样 有点不明白 既然是不会保存到本地化变量 那当SETLOCAL到底有何用处 可否举例 刚才发了一贴 现在手上需要一批处理解决 开机之后要有网络才运行这个程序 否则出错 我想FOR循环可以解决这问题吧 就是说在运行一个批处理 要在连上网络之后才运行这个EXE文件 前提 在没连上网络之前 这个批处理要一直运行 也就是说直到检测到网络才运行EXE 然后才EXIT SETLOCAL我会慢慢研究 现在手上的事急需解决


2007-11-19 00:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dooomer
初级用户





积分 109
发帖 52
注册 2006-1-3
状态 离线
『第 11 楼』:  

:check_net ping www.baidu.com||goto check_net start 程序.exe


2007-11-19 13:34
查看资料  发短消息 网志   编辑帖子  回复  引用回复
YoDe
中级用户




积分 224
发帖 102
注册 2007-11-9
状态 离线
『第 12 楼』:  

谢谢 楼上的解答 你的方法很实用 可现在的情况是…… 我这是网吧 路由的 现在能PING通外网却不能上网 原因是网吧的机子需要输入帐号密码 而在这段时间是不能上网的 因为收费软件的限制 但是能PING通外网 急啊 谁还有别的办法解决吗 其实就是说在登陆卡号之后运行这个软件 因为登陆卡号之就能上网了


2007-11-19 14:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
YoDe
中级用户




积分 224
发帖 102
注册 2007-11-9
状态 离线
『第 13 楼』:  

那么我想问一下有没有 不用PING而用别的批处理连接到网络 比如连接到百度而不是PING发送数据包 不晓得不登卡号能不能连百度 成功后 才运行后面的命令呢?


2007-11-19 15:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: