![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-06 13:37 |
共 48,039 主题排行 / 350,124 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » FOR命令疑问 |
| 可打印版本 704 / 12 |
| 第1楼 YoDe | 发表于 2007-11-16 23:46 |
| 中级用户 发帖 102 积分 224 | |
|
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 等待解答 |
|
| 第2楼 lxmxn | 发表于 2007-11-17 00:15 |
| 版主 发帖 4,938 积分 11,386 | |
|
%%M 也可以是别的,这完全取决于个人的兴趣爱好,就像你定义一个变量名一样,即自由又有限制。。。可以定义成%%a、%%b、%%A、%%Z,甚至可以是符号,比如%%#、%%等等。。
关键是do后面的%%变量,要和in之前定义的%%变量一致就成了。 for /f "skip=2 tokens=12" %%M in (phyaddr.txt) do set Mac=%%M |
|
| 第3楼 YoDe | 发表于 2007-11-17 01:04 |
| 中级用户 发帖 102 积分 224 | |
|
谢谢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楼 YoDe | 发表于 2007-11-17 01:28 |
| 中级用户 发帖 102 积分 224 | |
|
如果关闭这个批处理再手动运行另一个批处理变量是否还是存在
|
|
| 第5楼 lxmxn | 发表于 2007-11-17 04:23 |
| 版主 发帖 4,938 积分 11,386 | |
|
多看看for的帮助吧,这要讲也不是一时半会儿能讲玩的。
关闭一个批处理之后变量就没了,除了系统的环境变量。。。 |
|
| 第6楼 YoDe | 发表于 2007-11-17 10:04 |
| 中级用户 发帖 102 积分 224 | |
|
不好意思我没说清楚
我说的就是系统的环境变量……是否会保存我知道有个SETlocal 和ENDLOCAL好像这两个英文是这样写的 如果这两个都不写 系统默认是改变环境变量吗? |
|
| 第7楼 lxmxn | 发表于 2007-11-17 21:01 |
| 版主 发帖 4,938 积分 11,386 | |
|
不会改变。
|
|
| 第8楼 YoDe | 发表于 2007-11-19 00:17 |
| 中级用户 发帖 102 积分 224 | |
|
谢谢lxmxn斑竹,那么
在SETlocal 是不是就保存在系统里? |
|
| 第9楼 lxmxn | 发表于 2007-11-19 00:28 |
| 版主 发帖 4,938 积分 11,386 | |
|
Re YoDe:
在命令行调用批处理脚本时,如果使用了setlocal,那么setlocal只是使当前批处理设置的变量在批处理程序内有效,批处理运行完了之后,变量不会影响调用此批处理的命令行。 当运行了一个带有Setlocal命令的批处理脚本之后,批处理末尾如果没有Endlocal命令,默认隐含一个。所以一般只写一个Setlocal就行了,Endlocal可以不要。 有时间多看看setlocal命令的帮助文档吧。 |
|
| 第10楼 YoDe | 发表于 2007-11-19 00:36 |
| 中级用户 发帖 102 积分 224 | |
|
那如果不使用setlocal 当前批处理设置的变量在批处理程序内会怎么样 有点不明白 既然是不会保存到本地化变量 那当SETLOCAL到底有何用处 可否举例
刚才发了一贴 现在手上需要一批处理解决 开机之后要有网络才运行这个程序 否则出错 我想FOR循环可以解决这问题吧 就是说在运行一个批处理 要在连上网络之后才运行这个EXE文件 前提 在没连上网络之前 这个批处理要一直运行 也就是说直到检测到网络才运行EXE 然后才EXIT SETLOCAL我会慢慢研究 现在手上的事急需解决 |
|
| 第11楼 dooomer | 发表于 2007-11-19 13:34 |
| 初级用户 发帖 52 积分 109 | |
|
:check_net
ping www.baidu.com||goto check_net start 程序.exe |
|
| 第12楼 YoDe | 发表于 2007-11-19 14:32 |
| 中级用户 发帖 102 积分 224 | |
|
谢谢 楼上的解答 你的方法很实用 可现在的情况是……
我这是网吧 路由的 现在能PING通外网却不能上网 原因是网吧的机子需要输入帐号密码 而在这段时间是不能上网的 因为收费软件的限制 但是能PING通外网 急啊 谁还有别的办法解决吗 其实就是说在登陆卡号之后运行这个软件 因为登陆卡号之就能上网了 |
|
| 第13楼 YoDe | 发表于 2007-11-19 15:00 |
| 中级用户 发帖 102 积分 224 | |
|
那么我想问一下有没有 不用PING而用别的批处理连接到网络 比如连接到百度而不是PING发送数据包 不晓得不登卡号能不能连百度 成功后 才运行后面的命令呢?
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |