中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 求教DOS高手,出大错了 上一主题 | 下一主题
VAF
中级用户





积分 242
发帖 134
注册 2006-12-11
状态 离线
『楼 主』:  求教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%" 文件夹纹丝未动完好无损 !!!
倒是其它文件夹 (且都是系统原装的) 被删得干干净净一无所剩 !!!

这里, 我并不喊救命, 因我有备份, 恢复起来很容易, 只是说这个事 !!!

这就是重点, 我是菜鸟, 实在是吃不透这是怎么回事了.

高手给解解闷吧, 郁闷啊.

2008-1-23 01:05
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 2 楼』:  

变量设空
就成了rd /s /q C:\Program Files\
我是这样想的



简单!简单!再简单!
2008-1-23 01:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
VAF
中级用户





积分 242
发帖 134
注册 2006-12-11
状态 离线
『第 3 楼』:  

2楼的, 不对呀.
还留下了 "C:\Program Files\%SystemRoot%" 这个文件夹呢.

即想删的没给删, 没让删的倒给删得一个不剩 !!!

2008-1-23 02:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 4 楼』:  

没有什么可奇怪的echo "%SystemRoot%"和echo "%%SystemRoot%%"对比下吧
只有rd /s /q "C:\Program Files\%%SystemRoot%%"是正确的



第一高手    第二高手

2008-1-23 10:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 5 楼』:  

不要在命令行里面执行,要放在bat里面
@echo off
set SystemRoot=
echo "%SystemRoot%"
echo "%%SystemRoot%%"
pause




2008-1-23 11:35
查看资料  发短消息 网志   编辑帖子  回复  引用回复
VAF
中级用户





积分 242
发帖 134
注册 2006-12-11
状态 离线
『第 6 楼』:  

DX 们好象没看明白.
1. 首先是 C 盘的 "Program Files" 文件夹中发生了问题, 而不是当前系统 D盘的 "Program Files" 文件夹发生问题.
2. 是 C 盘 "C:\Program Files\%SystemRoot%" 只剩这个文件夹了; "C:\Program Files" 文件夹中的其它系统原建的文件夹全被删除了.

即: 为什么 %SystemRoot% 代表了 "C:\Program Files\*.*" 呢?

2008-1-23 13:05
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 7 楼』:  

没看明白再看仔细点(保存为bat运行看看):
@echo off
set SystemRoot=
echo rd /s /q "C:\Program Files\%SystemRoot%"
echo rd /s /q "C:\Program Files\%%SystemRoot%%"
pause




2008-1-23 15:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
VAF
中级用户





积分 242
发帖 134
注册 2006-12-11
状态 离线
『第 8 楼』:  

不是没看明白, 是 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"
............
这些用户后添加安装的文件夹不受影响.

另要交待的是, 这不是偶然现象, 此问题在我这里可重复再现.
真是奇怪了.........

2008-1-23 23:53
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: