楼 主
[已结]为什么在4dos下del文件后第二次入xp要检查硬盘?
发表于 2008-11-26 00:30 · 中国 广东 佛山 电信
初级用户
★★
积分 178 发帖 82 注册 2006-05-12 23:53 20年会员 UID 55419
状态 离线
问题已解,是IFS和GHOST之间的问题。
为什么在4dos下del文件后第二次进入xp都要检查硬盘?
首先我使用的是NTFS,
下面的一段代码运行在纯4DOS下:
for %%b in (c d e f g h i j k l m n o p q r s t u v w y z) do if exist %%b:\123.txt del %%b:\123.txt
上面的代码没什么出错,只是如果使用的是echo不是del 的话不会出问题,
在4dos下del文件后第二次进入xp都要检查硬盘?
这个是什么原因?这个是在使用del的时候出现的问题。
[ Last edited by austion on 2008-11-27 at 23:40 ]
第 2 楼
发表于 2008-11-26 00:59 · 中国 黑龙江 大兴安岭地区 联通
初级用户
★★
积分 190 发帖 101 注册 2008-11-23 14:58 17年会员 UID 131841 性别 男
状态 离线
恐怕得研究一下 XP 是根据什么磁盘标志决定是否检测该磁盘的。
第 3 楼
发表于 2008-11-26 01:21 · 中国 上海 电信
金牌会员
★★★★
积分 4,639 发帖 2,239 注册 2005-01-30 00:00 21年会员 UID 35785 性别 男
状态 离线
你是 DOS 下加载 NTFS 文件系统的驱动再这么做的吗?这个和 4DOS 应该无关,4DOS 还不能做到直接写扇区操作。你这句命令不用 4DOS 也能完成,你在 COMMAND 下执行试试,看看会不会出现同样的现象。
第 4 楼
发表于 2008-11-26 08:24 · 中国 广东 佛山 电信
初级用户
★★
积分 178 发帖 82 注册 2006-05-12 23:53 20年会员 UID 55419
状态 离线
我是在DOS 下加载NTFS文件系统驱动后再这么做的。
现在我转用4DOS了,那也该是在4DOS 下完成而不是再在COMMAND下完成了。
我以MOVE来操作的话倒没问题啊,我还想这个是这个DEL在FOR里面的问题,所以来问问。
第 5 楼
发表于 2008-11-26 09:34 · 中国 广东 佛山 电信
初级用户
★★
积分 178 发帖 82 注册 2006-05-12 23:53 20年会员 UID 55419
状态 离线
现在奇怪的事情终于出来了,
只要稍微改一下上面的代码:
for %%b in (c d e f g h i j k l m n o p q r s t u v w y z) do if exist %%b:\123.txt del /f /q %%b:\123.txt
问题就消失了。
这下就奇怪了,只是增加了DEL的 /f /q 就没问题了。
第 6 楼
发表于 2008-11-26 09:49 · 中国 广东 佛山 电信
初级用户
★★
积分 178 发帖 82 注册 2006-05-12 23:53 20年会员 UID 55419
状态 离线
我某批处理文件代码如下:
set wait0 =.
for %%j in (e f g h) do (
echo wait0
set wait0=%wait0%.
for /f "delims=" %%i in ( 'dir /a /s /f /[s0,300k] %%j:\*.exe %%j:\*.com' ) do echo %%i >> 234.txt
)
上面的代码看上去没有错误,
但是我在xp下运行4DOS来实现这段代码的时候,第一次运行没问题,接着不退出4DOS的情况下再次运行该批处理的时候,问题就出现了,第二次开始的时候
SET WAIT0=.
却实效了?这次第一个显示的是5个.,当然我本来要的就是第一个显示的是一个.。
第 7 楼
发表于 2008-11-26 09:53 · 中国 广东 佛山 电信
初级用户
★★
积分 178 发帖 82 注册 2006-05-12 23:53 20年会员 UID 55419
状态 离线
我郁闷了,把:
set wait0 =.
变成
set wait0= .
问题就解决了。
这个是什么问题?
第 8 楼
发表于 2008-11-26 10:26 · 中国 广东 佛山 电信
初级用户
★★
积分 178 发帖 82 注册 2006-05-12 23:53 20年会员 UID 55419
状态 离线
4DOS里是不是不再需要输入doskey也能有doskey呢?
第 9 楼
发表于 2008-11-26 13:47 · 中国 上海 电信
金牌会员
★★★★
积分 4,639 发帖 2,239 注册 2005-01-30 00:00 21年会员 UID 35785 性别 男
状态 离线
要在 COMMAND 下执行一次,再加载一下 COMMAND 就可以了,试完后 exit 回到 4DOS ,或者 COMMAND/C 来临时执行以下。
4DOS 自身就有历史命令处理功能,而且远比 DOSKEY 强大,所以用了 4DOS 就不需要 DOSKEY 了。
具体批处理怎么写我没法帮你写,因为我不知道你的具体目的是什么,我只能看你其中的某句:
for /f "delims=" %%i in ( 'dir /a /s /f /[s0,300k] %%j:\*.exe %%j:\*.com' ) do echo %%i >> 234.txt
似乎是多此一举,这和直接
dir /a /s /f /[s0,300k] %%j:\*.exe %%j:\*.com >> 234.txt
没什么区别
第 10 楼
发表于 2008-11-26 14:11 · 中国 广东 佛山 电信
初级用户
★★
积分 178 发帖 82 注册 2006-05-12 23:53 20年会员 UID 55419
状态 离线
如果把
echo %%i >> 234.txt
换成DEL就不一样了。
第 11 楼
发表于 2008-11-26 14:59 · 中国 上海 电信
金牌会员
★★★★
积分 4,639 发帖 2,239 注册 2005-01-30 00:00 21年会员 UID 35785 性别 男
状态 离线
如果要删除的话直接 del /s /f /[s0,300k] %%j:\*.exe %%j:\*.com 就可以了,为什么要搞得那么复杂?
第 12 楼
发表于 2008-11-26 16:17 · 中国 广东 佛山 电信
初级用户
★★
积分 178 发帖 82 注册 2006-05-12 23:53 20年会员 UID 55419
状态 离线
第 13 楼
发表于 2008-11-26 16:27 · 中国 上海 电信
金牌会员
★★★★
积分 4,639 发帖 2,239 注册 2005-01-30 00:00 21年会员 UID 35785 性别 男
状态 离线
第 14 楼
发表于 2008-11-26 16:39 · 中国 上海 电信
金牌会员
★★★★
积分 4,639 发帖 2,239 注册 2005-01-30 00:00 21年会员 UID 35785 性别 男
状态 离线
还可以再简单点:
del /s /f /[s0,300k] %%j:\*.exe;*.com
论坛跳转:
— 请选择 —
站务公告 & 版主讨论
意见反馈 & 网友交流
DOS学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正