楼 主
(已结)关于如何屏蔽 PAUSE >NUL 语句
发表于 2005-09-13 19:20 · 中国 辽宁 大连 联通
初级用户
★
积分 22
发帖 3
注册 2005-09-13 00:00
20年会员
UID 42484
性别 男
状态 离线
大家好:
目前做项目时,遇到了一个难题。
我编写了一个 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 楼
发表于 2005-09-13 20:04 · 中国 山西 运城 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
23年会员
UID 19
性别 男
状态 离线
Re stonewall:
可以利用 test.bat 过滤出一个新的批处理程序,然后调用它。例如:
find /v /i "pause" < test.bat > %temp%.\_test.bat
call %temp%.\_test.bat
for %%f in (%temp%.\_test.bat*) do del %%f
[
Last edited by willsort on 2005-9-13 at 20:07 ]
※ Batchinger 致 Bat Fans:请访问
批处理编程的异类 ,欢迎交流与共享批处理编程心得!
第 3 楼
Re willsort 关于如何屏蔽 PAUSE >NUL 语句
发表于 2005-09-14 14:14 · 中国 辽宁 大连 联通
初级用户
★
积分 22
发帖 3
注册 2005-09-13 00:00
20年会员
UID 42484
性别 男
状态 离线
谢谢 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 楼
发表于 2005-09-14 16:47 · 中国 山西 大同 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
23年会员
UID 19
性别 男
状态 离线
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)实现,可惜在批处理中不支持宏命令的调用。
※ Batchinger 致 Bat Fans:请访问
批处理编程的异类 ,欢迎交流与共享批处理编程心得!
第 5 楼
发表于 2005-09-14 20:48 · 中国 河北 石家庄 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
我很难为“不能修改xxx.bat和test.bat”想出一个合理的理由?就算你不能修改它,你可以先给它做一个备份,然后再修改它适合你自己使用。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“
这个帖子”和“
这个帖子”并努力遵守,如果可能,请告诉更多的人!
第 6 楼
发表于 2007-02-14 05:41 · 中国 浙江 台州 电信
高级用户
★★
DOS学徒
积分 526
发帖 252
注册 2007-02-12 05:35
19年会员
UID 79286
性别 男
状态 离线
第 7 楼
发表于 2007-02-15 19:50 · 中国 广东 广州 天河区 电信
金牌会员
★★★★
一叶枝头,万树皆春
积分 2,564
发帖 1,127
注册 2006-12-25 22:57
19年会员
UID 74552
性别 男
状态 离线
嘿嘿,不存在一些特殊命令的话可以用test.cmd <nul哦
论坛跳转: