![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-14 03:07 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS学习入门 & 精彩文章 (教学室) » 批处理问题 关于 FOR命令 和管道通道符>> |
| 可打印版本 1,331 / 5 |
| 第1楼 mamingna | 发表于 2005-08-16 20:57 |
| 新手上路 发帖 5 积分 17 | |
|
批处理问题 关于 FOR命令 和管道通道符>> 我写了一个批处理可是运行到一段代码时 一直出错 可我就是看不出来为什么
还请大家帮帮看看 @echo off set bak=%windir%\REGBAK if not exist %bak%\. md %bak% echo 删除系统更新目录: >%bak%\RDlist.txt dir /a:d /b %SystemDrive%\$* >%bak%\del.txt for /f %a in (%bak%\del.txt) do echo 成功删除目录 %a>>%bak%\RDlist.txt && rd /q /s %a 可以他一直提示 此时不应有 >> 这是怎么回事啊? |
|
| 第2楼 JonePeng | 发表于 2005-08-16 22:01 |
| 金牌会员 发帖 1,883 积分 4,562 来自 广东广州 | |
|
首先,楼主没有说明是在什么系统下运行。
其次,批处理中滥用了环境变量。%windir%是Win9x的独有的环境变量,%SystemDrive%则是Win2000/XP/2003的。 从最后一行的for命令看来,要顺利运行的话需要在Win2000/XP/2003下。批处理的第二行应作如下修改: set bak=%SystemRoot%\REGBAK 最后一行试试改为两行: for /f %a in (%bak%\del.txt) do rd /q /s %a for /f %a in (%bak%\del.txt) do echo 成功删除目录 %a>>%bak%\RDlist.txt |
|
| 第3楼 mamingna | 发表于 2005-08-16 22:23 |
| 新手上路 发帖 5 积分 17 | |
|
谢谢你的回答
不作 %WINDIR%这个变量在XP系统下是有的呢 嘎嘎 不信你在CMD下运行 SET看最后一行 就是了! 好的 我试下 |
|
| 第4楼 mamingna | 发表于 2005-08-16 22:40 |
| 新手上路 发帖 5 积分 17 | |
|
for /f %a in (%bak%\del.txt) do rd /q /s %a
for /f %a in (%bak%\del.txt) do echo 成功删除目录 %a>>%bak%\RDlist.txt 我也有这样试过 但是也是一样 后面我把 %a改%%a就可以用了 不明白中 |
|
| 第5楼 Michael | 发表于 2005-08-16 22:58 |
| 钻石会员 发帖 3,041 积分 10,056 | |
|
在cmd下,键入for /?就知道为什么要用%%a了。
既然%a是实参,形参当然要用%%a啦。 |
|
| 第6楼 tonyway2005 | 发表于 2005-09-27 01:11 |
| 新手上路 发帖 1 积分 2 | |
|
我在CMD下输入SET,最后一行显示为windir=c:\windows
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |