![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-07 08:35 |
共 48,040 主题排行 / 350,125 发帖 / 今日 0 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 求教DOS高手,出大错了 |
| 可打印版本 764 / 7 |
| 第1楼 VAF | 发表于 2008-01-23 01:05 |
| 中级用户 发帖 134 积分 242 | |
|
求教DOS高手,出大错了 高手看这是怎么回事?
我是一个好瞎试验的人, 环境是多系统, C 盘是 9x , D 盘是 xp , E 盘是 2003 , 经常有某些非正规的软件, 在安装时不检测或说不会检测系统环境; 就想当然地按照软件作者的设想进行安装, 有时会造成一些错误. 如; 在我 C 盘的 "Program Files" 文件夹中经常会出现一个叫 %SystemRoot% 的子文件夹, 这个文件夹可能是我在 9x 环境下试验 安装某些需要在 xp 环境下才能正确安装的软件时形成的. 现在这不是我要说的重点, 我现在说的是删除这个文件夹时遇到的问题. 首选说在 GUI 也就是在窗口环境中删除这个文件夹没有任何问题; 选中, 删除, 很正常地就删除了. 问题是在批处理中删除这个文件夹, 一开始, 由于语句错误, 删除不了. rd /s /q "C:\Program Files\%SystemRoot%" 由于语句错误, 删除不了; 后来找到了原因, 改为: rd /s /q "C:\Program Files\%%SystemRoot%%" 正确地删除了. 这也不是重点. 重点是: 在错误语句 rd /s /q "C:\Program Files\%SystemRoot%" 中加暂停显示结果是 要删除的目标是 "C:\Program Files\D:\WINDOWS" 目标是当前操作系统, 且语法不对, 当然删除不了了. 后来我就想, 那个 %SystemRoot% 是环境变量, 我若是将其设空, 不就应该可以了吗. 结果, 我在这个语句之前加了一句; set SystemRoot= rd /s /q "C:\Program Files\%SystemRoot%" 结果出大错了!!! 要删除的那个 "C:\Program Files\%SystemRoot%" 文件夹纹丝未动完好无损 !!! 倒是其它文件夹 (且都是系统原装的) 被删得干干净净一无所剩 !!! 这里, 我并不喊救命, 因我有备份, 恢复起来很容易, 只是说这个事 !!! 这就是重点, 我是菜鸟, 实在是吃不透这是怎么回事了. 高手给解解闷吧, 郁闷啊. |
|
| 第2楼 terse | 发表于 2008-01-23 01:49 |
| 银牌会员 发帖 946 积分 2,404 | |
|
变量设空
就成了rd /s /q C:\Program Files\ 我是这样想的 |
|
| 第3楼 VAF | 发表于 2008-01-23 02:07 |
| 中级用户 发帖 134 积分 242 | |
|
2楼的, 不对呀.
还留下了 "C:\Program Files\%SystemRoot%" 这个文件夹呢. 即想删的没给删, 没让删的倒给删得一个不剩 !!! |
|
| 第4楼 fastslz | 发表于 2008-01-23 10:39 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
没有什么可奇怪的echo "%SystemRoot%"和echo "%%SystemRoot%%"对比下吧
只有rd /s /q "C:\Program Files\%%SystemRoot%%"是正确的 |
|
| 第5楼 zh159 | 发表于 2008-01-23 11:35 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
不要在命令行里面执行,要放在bat里面
|
|
| 第6楼 VAF | 发表于 2008-01-23 13:05 |
| 中级用户 发帖 134 积分 242 | |
|
DX 们好象没看明白.
1. 首先是 C 盘的 "Program Files" 文件夹中发生了问题, 而不是当前系统 D盘的 "Program Files" 文件夹发生问题. 2. 是 C 盘 "C:\Program Files\%SystemRoot%" 只剩这个文件夹了; "C:\Program Files" 文件夹中的其它系统原建的文件夹全被删除了. 即: 为什么 %SystemRoot% 代表了 "C:\Program Files\*.*" 呢? |
|
| 第7楼 zh159 | 发表于 2008-01-23 15:25 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
没看明白再看仔细点(保存为bat运行看看):
|
|
| 第8楼 VAF | 发表于 2008-01-23 23:53 |
| 中级用户 发帖 134 积分 242 | |
|
不是没看明白, 是 DX 的解释不能解释我这里的实际情况.
我再详细说一下: 多系统, 现工作在 D 盘的 XP 系统环境下; 要用批处理删除 "C:\Program Files\%SystemRoot%" 这个文件夹. 这个文件夹就叫 %SystemRoot% (名称自身就带着%号的) set SystemRoot= rd /s /q "C:\Program Files\%SystemRoot%" (这是我的一个清理垃圾批处理中的一句) 此后, 这个叫 %SystemRoot% 文件夹依然存在, 其它原属于 9x "C:\Program Files" 文件夹中的子文件夹全给删除了; 诸如: "C:\Program Files\Accessories" "C:\Program Files\Common Files" "C:\Program Files\InstallShield Installation Information" "C:\Program Files\Intel" "C:\Program Files\Internet Explorer" "C:\Program Files\Messenger" "C:\Program Files\Movie Maker" "C:\Program Files\MSN Gaming Zone" "C:\Program Files\NetMeeting" "C:\Program Files\Outlook Express" "C:\Program Files\PLUS!" "C:\Program Files\Uninstall Information" "C:\Program Files\Windows Media Player" "C:\Program Files\WindowsUpdate" 等等这些原 9x 系统原装的文件夹统统被删除了. 还有一个奇怪的现象原来没说明白, 就是还有一些属于后来用户自己添加安装的项目不受影响. 诸如: "C:\Program Files\7-Zip" "C:\Program Files\FlashGet" "C:\Program Files\Tencent" "C:\Program Files\TTPlayer" ............ 这些用户后添加安装的文件夹不受影响. 另要交待的是, 这不是偶然现象, 此问题在我这里可重复再现. 真是奇怪了......... |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |