![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-03 10:58 |
共 48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » (已结)关于如何屏蔽 PAUSE >NUL 语句 |
| 可打印版本 1,560 / 6 |
| 第1楼 stonewall | 发表于 2005-09-13 19:20 |
| 初级用户 发帖 3 积分 22 | |
|
(已结)关于如何屏蔽 PAUSE >NUL 语句 大家好:
目前做项目时,遇到了一个难题。 我编写了一个 test.bat文件 @ECHO OFF @ECHO Press any key to exit ... pause > nul 现在我想屏蔽掉 pause > nul 语句。但是,遗憾的是我不能修改test.bat文件的内容。所以,我想请教大家是否有什么方法在调用 test.bat文件时,不执行 pause > nul 这条语句呢? 谢谢大家的帮助!!! [ Last edited by willsort on 2005-9-16 at 09:49 ] |
|
| 第2楼 willsort | 发表于 2005-09-13 20:04 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re stonewall:
可以利用 test.bat 过滤出一个新的批处理程序,然后调用它。例如: [ Last edited by willsort on 2005-9-13 at 20:07 ] |
|
| 第3楼 stonewall | 发表于 2005-09-14 14:14 |
| 初级用户 发帖 3 积分 22 | |
|
Re willsort 关于如何屏蔽 PAUSE >NUL 语句 谢谢 willsort版主的回贴!
您提供的方法我试验过了很好用。 但是我可能有点得寸进尺了,由于业务需要,目前我在调用 test.bat之前还要调用另一个bat文件(xxx.bat)。下面是它的调用顺序。 文件fff.bat的内容如下: ============================= xxx.bat ============================= 文件xxx.bat的内容如下: ============================= test.bat ... ============================= 文件test.bat的内容如下: ============================= @ECHO OFF @ECHO Press any key to exit ... pause > nul ... ============================= 目前的情况是,xxx.bat 以及 test.bat 的内容我都不能修改。我只能修改 fff.bat的内容。在这种情况下,我想屏蔽掉 test.bat文件内的 pause > nul 语句。怎样通过修改fff.bat的内容来达到我的目的呢? 此外,糟糕的是,由于在xxx.bat当中还有许多操作,所以我不能跳过xxx.bat文件。 即 fff.bat文件必须先调用xxx.bat文件然后由xxx.bat来调用test.bat! 另外,如果您有相关的网络资源,能否告诉小弟? 谢谢! [ Last edited by stonewall on 2005-9-14 at 14:49 ] |
|
| 第4楼 willsort | 发表于 2005-09-14 16:47 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re stonewall:
先说简单一些的可行性方案:在 fff.bat 中用 cd 改变批处理的当前路径,然后将test.bat 过滤结果置于新的当前路径下,并名为 test.bat,然后再调用 xxx.bat ,此时在 xxx.bat 调用的 test.bat 便是我们自定义的版本了。 这种方案牵涉到两个问题,一是 xxx.bat 如何调用;因为当前路径改变,所以调用时需加上路径,但保存和获取原来的路径是比较麻烦的(在NT系列下可以通过保存 %cd% 变量来返回原路径),不如直接将原 xxx.bat 拷贝至新路径下后再跳转;第二是如何返回到原来的当前路径,跳转到新路径后,返回原路径仍需保存和获取元路径,简单的处理办法是,在原路径下新建子目录,然后以此子目录为新路径,返回时直接cd..即可,但有可能原路径是只读的。 再说另一个复杂一些的方案:如果你所应用的平台是 WinNT 系列,那么可以使用 for /f 命令过滤 xxx.bat ,得到一个新的批处理 %temp%.\_xxx.bat ,在其中将 test.bat 的调用替换为 %temp%.\_test.bat 的调用,然后你在 fff.bat 中调用 %temp%.\_xxxt.bat 。如果你使用的是 Win9x/MSDOS 系列,可以使用第三方命令,替换这个调用串,比如 hexc,change,它们也可以应用于 WinNT 系列中。 当然,这样的解决方案,转折是大了一些。如果你的 test.bat 调用位于 xxx.bat 的首部或尾部,倒可以将它整合进 fff.bat 中,放在 xxx.bat 调用的前一句或后一句。 除此而外,我们仅余直面“屏蔽内部命令”这一难题,如果在命令行,倒可以用 doskey 的宏命令(doskye pause=rem)实现,可惜在批处理中不支持宏命令的调用。 |
|
| 第5楼 Climbing | 发表于 2005-09-14 20:48 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
我很难为“不能修改xxx.bat和test.bat”想出一个合理的理由?就算你不能修改它,你可以先给它做一个备份,然后再修改它适合你自己使用。
|
|
| 第6楼 gne3 | 发表于 2007-02-14 05:41 |
| 高级用户 发帖 252 积分 526 | |
|
up
|
|
| 第7楼 everest79 | 发表于 2007-02-15 19:50 |
| 金牌会员 发帖 1,127 积分 2,564 | |
|
嘿嘿,不存在一些特殊命令的话可以用test.cmd <nul哦
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |