![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-11 18:24 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [原创]NTFS4DOS.EXE 在批处理程序中运行的解决方案. |
| 可打印版本 1,817 / 6 |
| 第1楼 dosfuner | 发表于 2009-01-22 12:27 |
| 新手上路 发帖 7 积分 13 | |
|
[原创]NTFS4DOS.EXE 在批处理程序中运行的解决方案. 常见 NTFS4DOS.EXE 无法在 DOS 批处理程序中执行的问题!
现有一解决方案, 以 a:\autoexec.bat 为例示范如下. 在批处理程序中加入如下语句: rem ---- 此处为文件头 ------------------------- if "%1"=="auto" goto _batch ...... ntfs4dos.exe a:\command.com /c a:\autoexec.bat auto :_batch ...... :_end a: rem ----此处为文件尾 -------------------------- 必要说明 -- 一旦批处理程序执行完毕, 将出现两种情况: 1. NTFS4DOS.EXE 自动从内存中退出, DOS 将不再支持 NTFS; 2. 在某些情况下 DOS 将找不到驱动器字母, 所以务必在程序结尾处 :_end 后加入 a: 或可被 DOS 识别的磁盘盘符. 简单地说, 此法为递归调用. 试想一下, 若无参数 "auto" 将会出现怎样的结果? 有人想试试吗?! ;) 附 NTFS4DOS.EXE 用法及参数如下: NTFS for DOS Version 1.9 Copyright (C) 2006, Avira GmbH (http://www.avira.com) All Rights Reserved. Usage: NTFS4DOS ]]] options: /? | /h - this help /rnn - create ramdrive nn MB /lC - allocate first character 'C' for a volume Example: NTFS4DOS /r5 /lE COMMAND.COM /C MYBATCH.BAT Above creates a 5 MB ramdrive, makes first drive as E and starts the batch file MYBATCH.BAT If no DOS-APPLICATION is specified, NTFS4DOS will try to start the default DOS shell which is defined in the COMSPEC variable. 另有一个向大家求教的问题 -- 在 DOS 交互环境下, 手动执行 NTFS4DOS.EXE ver1.9 之后, 如何使其从内存中退出? ######################################################################### Originally posted by dosfuner at 2009-1-25 11:33 AM: ######################################################################### 2010-2-23 修改版-- 近来偶然发现此批处理程序段有一 BUG,即当硬盘中全无 NTFS 格式分区时,ntfs4dos.exe 将自动从内存中退出,之后便遇到紧随其后的语句 goto _end 而自动退出批处理程序,也就是说,:_batch 之后的指令并不会被执行。现将修改版陈列如下。用户只需直接套用,即将省略号处改为自己的代码即可。用虚拟机做测试,以虚拟软驱启动时,注意 a:\ 下是否存在之前生成的 sig_ntfs 文件。 rem ---- 此处为文件头 ------------------------- if "%1"=="auto" goto _batch ...... ntfs4dos.exe a:\command.com /k a:\autoexec.bat auto :_batch if "%cmdline%"=="" goto __make_sign if exist a:\sig_ntfs goto _end :__continue ...... goto _end :__make_sign echo Generate a label to indicate the existence NTFS hard disk partition. > a:\sig_ntfs goto __continue :_end a: rem ----此处为文件尾 -------------------------- [ Last edited by dosfuner on 2010-2-23 at 20:05 ] |
|
| 第2楼 nobodytt | 发表于 2009-01-23 11:46 |
| 初级用户 发帖 33 积分 78 | |
|
如果用 ntfs4dos command /k a:\autoexec.bat ,则执行后就不会自动退出ntfs
要退出ntfs可以使用exit [ Last edited by nobodytt on 2009-1-23 at 11:52 ] |
|
| 第3楼 dosfuner | 发表于 2009-01-23 12:46 |
| 新手上路 发帖 7 积分 13 | |
Originally posted by nobodytt at 2009-1-23 11:46 AM: 试了一下带 /K 参数的 command.com, 的确好用! 不过, 上述方法又有新问题 -- 若在 autoexec.bat 中调用 ntfs4dos.exe command /k autoexe.bat, 则应无限循环下去, 而且 ntfs4dos.exe 以下的批指令将永远不会被执行. 但实际情况是, autoexec.bat 中的批指令被执行了两次...... |
|
| 第4楼 nobodytt | 发表于 2009-01-23 17:41 |
| 初级用户 发帖 33 积分 78 | |
|
autoexec.bat是dos启动默认执行的批处理,它在启动时执行了一次,后来又在ntfs4dos中执行了一次
|
|
| 第5楼 dosfuner | 发表于 2009-01-25 11:33 |
| 新手上路 发帖 7 积分 13 | |
|
改动一下, 即可使其实现只执行一次批处理:
rem ---- 此处为文件头 ------------------------- if "%1"=="auto" goto _batch ...... ntfs4dos.exe a:\command.com /k a:\autoexec.bat auto goto _end :_batch ...... :_end a: rem ----此处为文件尾 -------------------------- 当然, 此法只适用于对 autoexec.bat 或对批处理程序自身的递归调用. 若在 ntfs4dos.exe 命令行中调用其他批处理程序, 则不必如此繁琐. |
|
| 第6楼 martin325 | 发表于 2009-03-18 12:09 |
| 银牌会员 发帖 603 积分 1,582 | |
|
非常感谢提供好方法,偶正好用上
|
|
| 第7楼 bigfeet | 发表于 2009-04-21 05:18 |
| 新手上路 发帖 9 积分 19 | |
|
发现exit后,以后的bat命令就不能继续了,就跳进了类似a:\里,有没有什么原因可以避免之?
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |