标题: [已结]为什么在4dos下del文件后第二次入xp要检查硬盘?
[打印本页]
作者: austion
时间: 2008-11-26 00:30
标题: [已结]为什么在4dos下del文件后第二次入xp要检查硬盘?
问题已解,是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 ]
作者: Qtwdftxvt
时间: 2008-11-26 00:59
恐怕得研究一下 XP 是根据什么磁盘标志决定是否检测该磁盘的。
作者: DOSforever
时间: 2008-11-26 01:21
你是 DOS 下加载 NTFS 文件系统的驱动再这么做的吗?这个和 4DOS 应该无关,4DOS 还不能做到直接写扇区操作。你这句命令不用 4DOS 也能完成,你在 COMMAND 下执行试试,看看会不会出现同样的现象。
作者: austion
时间: 2008-11-26 08:24
我是在DOS 下加载NTFS文件系统驱动后再这么做的。
现在我转用4DOS了,那也该是在4DOS 下完成而不是再在COMMAND下完成了。
我以MOVE来操作的话倒没问题啊,我还想这个是这个DEL在FOR里面的问题,所以来问问。
作者: austion
时间: 2008-11-26 09:34
现在奇怪的事情终于出来了,
只要稍微改一下上面的代码:
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 就没问题了。
作者: austion
时间: 2008-11-26 09:49
我某批处理文件代码如下:
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个.,当然我本来要的就是第一个显示的是一个.。
作者: austion
时间: 2008-11-26 09:53
我郁闷了,把:
set wait0 =.
变成
set wait0= .
问题就解决了。
这个是什么问题?
作者: austion
时间: 2008-11-26 10:26
4DOS里是不是不再需要输入doskey也能有doskey呢?
作者: DOSforever
时间: 2008-11-26 13:47
要在 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
没什么区别
作者: austion
时间: 2008-11-26 14:11
如果把
echo %%i >> 234.txt
换成DEL就不一样了。
作者: DOSforever
时间: 2008-11-26 14:59
如果要删除的话直接 del /s /f /[s0,300k] %%j:\*.exe %%j:\*.com 就可以了,为什么要搞得那么复杂?
作者: austion
时间: 2008-11-26 16:17
原来DEL还有这么的用法的。
作者: DOSforever
时间: 2008-11-26 16:27
注意我的原话:
Quote: |
这是一个参数,不是某个具体的命令,而且这个参数差不多可以在许多操作对象是文件为参数的 4DOS 命令中使用 |
|
http://www.cn-dos.net/forum/viewthread.php?tid=44071#pid307313
作者: DOSforever
时间: 2008-11-26 16:39
还可以再简单点:
del /s /f /[s0,300k] %%j:\*.exe;*.com