|
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之前定义的%%变量一致就成了。
Quote: | 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
状态 离线
|
|
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
状态 离线
|
|
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 |
|