![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-10 14:07 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,255 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已结]为什么在4dos下del文件后第二次入xp要检查硬盘? |
| 可打印版本 908 / 13 |
| 第1楼 austion | 发表于 2008-11-26 00:30 |
| 初级用户 发帖 82 积分 178 | |
|
[已结]为什么在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 ] |
|
| 第2楼 Qtwdftxvt | 发表于 2008-11-26 00:59 |
| 初级用户 发帖 101 积分 190 | |
|
恐怕得研究一下 XP 是根据什么磁盘标志决定是否检测该磁盘的。
|
|
| 第3楼 DOSforever | 发表于 2008-11-26 01:21 |
| 金牌会员 发帖 2,239 积分 4,639 | |
|
你是 DOS 下加载 NTFS 文件系统的驱动再这么做的吗?这个和 4DOS 应该无关,4DOS 还不能做到直接写扇区操作。你这句命令不用 4DOS 也能完成,你在 COMMAND 下执行试试,看看会不会出现同样的现象。
|
|
| 第4楼 austion | 发表于 2008-11-26 08:24 |
| 初级用户 发帖 82 积分 178 | |
|
我是在DOS 下加载NTFS文件系统驱动后再这么做的。
现在我转用4DOS了,那也该是在4DOS 下完成而不是再在COMMAND下完成了。 我以MOVE来操作的话倒没问题啊,我还想这个是这个DEL在FOR里面的问题,所以来问问。 |
|
| 第5楼 austion | 发表于 2008-11-26 09:34 |
| 初级用户 发帖 82 积分 178 | |
|
现在奇怪的事情终于出来了,
只要稍微改一下上面的代码: 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楼 austion | 发表于 2008-11-26 09:49 |
| 初级用户 发帖 82 积分 178 | |
|
我某批处理文件代码如下:
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楼 austion | 发表于 2008-11-26 09:53 |
| 初级用户 发帖 82 积分 178 | |
|
我郁闷了,把:
set wait0 =. 变成 set wait0= . 问题就解决了。 这个是什么问题? |
|
| 第8楼 austion | 发表于 2008-11-26 10:26 |
| 初级用户 发帖 82 积分 178 | |
|
4DOS里是不是不再需要输入doskey也能有doskey呢?
|
|
| 第9楼 DOSforever | 发表于 2008-11-26 13:47 |
| 金牌会员 发帖 2,239 积分 4,639 | |
|
要在 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楼 austion | 发表于 2008-11-26 14:11 |
| 初级用户 发帖 82 积分 178 | |
|
如果把
echo %%i >> 234.txt 换成DEL就不一样了。 |
|
| 第11楼 DOSforever | 发表于 2008-11-26 14:59 |
| 金牌会员 发帖 2,239 积分 4,639 | |
|
如果要删除的话直接 del /s /f /[s0,300k] %%j:\*.exe %%j:\*.com 就可以了,为什么要搞得那么复杂?
|
|
| 第12楼 austion | 发表于 2008-11-26 16:17 |
| 初级用户 发帖 82 积分 178 | |
|
原来DEL还有这么的用法的。
|
|
| 第13楼 DOSforever | 发表于 2008-11-26 16:27 |
| 金牌会员 发帖 2,239 积分 4,639 | |
|
注意我的原话:
这是一个参数,不是某个具体的命令,而且这个参数差不多可以在许多操作对象是文件为参数的 4DOS 命令中使用 http://www.cn-dos.net/forum/viewthread.php?tid=44071#pid307313 |
|
| 第14楼 DOSforever | 发表于 2008-11-26 16:39 |
| 金牌会员 发帖 2,239 积分 4,639 | |
|
还可以再简单点:
del /s /f /[s0,300k] %%j:\*.exe;*.com |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |