楼 主
FOR命令疑问
发表于 2007-11-16 23:46 · 中国 浙江 台州 电信
中级用户
★★
积分 224 发帖 102 注册 2007-11-09 00:19 18年会员 UID 102111 性别 男
状态 离线
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 等待解答
第 2 楼
发表于 2007-11-17 00:15 · 中国 湖北 武汉 电信
版主
★★★★★
积分 11,386 发帖 4,938 注册 2006-07-23 17:10 20年会员 UID 59080
状态 离线
%%M 也可以是别的,这完全取决于个人的兴趣爱好,就像你定义一个变量名一样,即自由又有限制。。。可以定义成%%a、%%b、%%A、%%Z,甚至可以是符号,比如%%#、%%等等。。
关键是do后面的%%变量,要和in之前定义的%%变量一致就成了。
for /f "skip=2 tokens=12" %%M in (phyaddr.txt) do set Mac=%%M
第 3 楼
发表于 2007-11-17 01:04 · 中国 浙江 台州 临海市 电信
中级用户
★★
积分 224 发帖 102 注册 2007-11-09 00:19 18年会员 UID 102111 性别 男
状态 离线
谢谢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入门了吧?
第 4 楼
发表于 2007-11-17 01:28 · 中国 浙江 台州 临海市 电信
中级用户
★★
积分 224 发帖 102 注册 2007-11-09 00:19 18年会员 UID 102111 性别 男
状态 离线
如果关闭这个批处理再手动运行另一个批处理变量是否还是存在
第 5 楼
发表于 2007-11-17 04:23 · 中国 湖北 武汉 电信
版主
★★★★★
积分 11,386 发帖 4,938 注册 2006-07-23 17:10 20年会员 UID 59080
状态 离线
多看看for的帮助吧,这要讲也不是一时半会儿能讲玩的。
关闭一个批处理之后变量就没了,除了系统的环境变量。。。
第 6 楼
发表于 2007-11-17 10:04 · 中国 浙江 台州 电信
中级用户
★★
积分 224 发帖 102 注册 2007-11-09 00:19 18年会员 UID 102111 性别 男
状态 离线
不好意思我没说清楚
我说的就是系统的环境变量……是否会保存我知道有个SETlocal
和ENDLOCAL好像这两个英文是这样写的
如果这两个都不写 系统默认是改变环境变量吗?
第 7 楼
发表于 2007-11-17 21:01 · 中国 湖北 武汉 电信
版主
★★★★★
积分 11,386 发帖 4,938 注册 2006-07-23 17:10 20年会员 UID 59080
状态 离线
第 8 楼
发表于 2007-11-19 00:17 · 中国 浙江 台州 电信
中级用户
★★
积分 224 发帖 102 注册 2007-11-09 00:19 18年会员 UID 102111 性别 男
状态 离线
谢谢lxmxn斑竹,那么
在SETlocal
是不是就保存在系统里?
第 9 楼
发表于 2007-11-19 00:28 · 中国 湖北 武汉 电信
版主
★★★★★
积分 11,386 发帖 4,938 注册 2006-07-23 17:10 20年会员 UID 59080
状态 离线
Re YoDe:
在命令行调用批处理脚本时,如果使用了setlocal,那么setlocal只是使当前批处理设置的变量在批处理程序内有效,批处理运行完了之后,变量不会影响调用此批处理的命令行。
当运行了一个带有Setlocal命令的批处理脚本之后,批处理末尾如果没有Endlocal命令,默认隐含一个。所以一般只写一个Setlocal就行了,Endlocal可以不要。
有时间多看看setlocal命令的帮助文档吧。
第 10 楼
发表于 2007-11-19 00:36 · 中国 浙江 台州 电信
中级用户
★★
积分 224 发帖 102 注册 2007-11-09 00:19 18年会员 UID 102111 性别 男
状态 离线
那如果不使用setlocal 当前批处理设置的变量在批处理程序内会怎么样 有点不明白 既然是不会保存到本地化变量 那当SETLOCAL到底有何用处 可否举例
刚才发了一贴 现在手上需要一批处理解决
开机之后要有网络才运行这个程序 否则出错
我想FOR循环可以解决这问题吧
就是说在运行一个批处理 要在连上网络之后才运行这个EXE文件 前提 在没连上网络之前 这个批处理要一直运行 也就是说直到检测到网络才运行EXE 然后才EXIT
SETLOCAL我会慢慢研究 现在手上的事急需解决
第 11 楼
发表于 2007-11-19 13:34 · 美国 加利福尼亚州 阿拉梅达 费利蒙 Hurricane_Electric公司
初级用户
★★
积分 109 发帖 52 注册 2006-01-03 22:47 20年会员 UID 48392
状态 离线
:check_net
ping www.baidu.com||goto check_net
start 程序.exe
第 12 楼
发表于 2007-11-19 14:32 · 中国 浙江 台州 电信
中级用户
★★
积分 224 发帖 102 注册 2007-11-09 00:19 18年会员 UID 102111 性别 男
状态 离线
谢谢 楼上的解答 你的方法很实用 可现在的情况是……
我这是网吧 路由的 现在能PING通外网却不能上网 原因是网吧的机子需要输入帐号密码
而在这段时间是不能上网的 因为收费软件的限制 但是能PING通外网 急啊 谁还有别的办法解决吗 其实就是说在登陆卡号之后运行这个软件 因为登陆卡号之就能上网了
第 13 楼
发表于 2007-11-19 15:00 · 中国 浙江 台州 电信
中级用户
★★
积分 224 发帖 102 注册 2007-11-09 00:19 18年会员 UID 102111 性别 男
状态 离线
那么我想问一下有没有 不用PING而用别的批处理连接到网络 比如连接到百度而不是PING发送数据包 不晓得不登卡号能不能连百度 成功后 才运行后面的命令呢?
论坛跳转:
— 请选择 —
站务公告 & 版主讨论
意见反馈 & 网友交流
DOS学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正