无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 4775|回复: 21
打印 上一主题 下一主题

我写了个小批处理,用>nul无法屏蔽错误提示

[复制链接]
跳转到指定楼层
1#
发表于 2007-8-19 15:46:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
type  test.bat

  Quote:
@echo off

rem 检测备份分区    设置Drive为备份分区盘符
SET Drive=null
for %%z in (c d e f g h i j k l m n o p q r s t u v w ) do call 1.bat %%z >nul

if %Drive%==null goto exit
goto boot
:exit
echo 不存在备份分区,安装中止!
pause && exit

:boot
echo 备份分区盘符为:%Drive%
pause

type 1.bat

  Quote:
@echo off
vol %1: |find "1KEYRESTORE" >nul
if errorlevel 1 goto exit
SET Drive=%1:
:exit

这两代代码 能找出 具体卷标的 那个 盘的盘符,

但在 运行过程 中 会因为 没有的盘 而显示出来一个错误提示:

Invalid drive specification

我如何 才能屏蔽这个提示?



2#
发表于 2007-8-19 16:12:22 | 只看该作者
>nul只能屏蔽正确的信息。错误的还需2>nul.
即 >nul 2>nul
回复

使用道具 举报

3#
 楼主| 发表于 2007-8-19 18:07:17 | 只看该作者
原帖由 lianjiang 于 2007-8-19 04:12 PM 发表
>nul只能屏蔽正确的信息。错误的还需2>nul.
即 >nul 2>nul




  测试还是不正常

反而多了 个错误:

未命名.JPG (22.15 KB, 下载次数: 63)

未命名.JPG
回复

使用道具 举报

4#
发表于 2007-8-19 18:17:44 | 只看该作者
看来3楼的只能屏蔽一般错误。
回复

使用道具 举报

5#
发表于 2007-8-19 18:24:38 | 只看该作者
do call 1.bat %%z >nul
改成下面的试试看:
if exist %%z:\nul  do call 1.bat %%z >nul

[ 本帖最后由 lianjiang 于 2007-8-19 07:04 PM 编辑 ]
回复

使用道具 举报

6#
发表于 2007-8-19 20:45:22 | 只看该作者
呃...有点郁闷....这么试都失败.....vol的输出不能>nul?????
用分区下特征文件ms没有任何问题....
回复

使用道具 举报

7#
发表于 2007-8-19 21:58:06 | 只看该作者

回复 #5 lianjiang 的帖子

如果用if...exist判断的话.可以直接放一个特征文件进去.就没有必要再转个弯用vol加find判断了...
回复

使用道具 举报

8#
发表于 2007-8-19 22:03:36 | 只看该作者
同意,个人以为特征文件的方法足矣。
回复

使用道具 举报

9#
发表于 2007-8-19 22:09:31 | 只看该作者

回复 #8 lianjiang 的帖子

我一直这么用的......关注中..
回复

使用道具 举报

10#
 楼主| 发表于 2007-8-20 01:01:29 | 只看该作者
原帖由 无翼鸟飞翔 于 2007-8-19 10:09 PM 发表
我一直这么用的......关注中..



  能否给个 例子, 我是 实在 没脑子了
回复

使用道具 举报

11#
发表于 2007-8-20 01:18:31 | 只看该作者
原帖由 ww111222 于 2007-8-19 03:46 PM 发表
type  test.bat

  Quote:@echo off

rem 检测备份分区    设置Drive为备份分区盘符
SET Drive=null
for %%z in (c d e f g h i j k l m n o p q r s t u v w ) do call 1.bat %%z >nul

if %Drive%==n ...


你把 for 循环改一下就行了
for %%z in (c d e f g h i j k l m n o p q r s t u v w ) do if exist %%z:\nul call 1.BAT %%z >nul
避免测试那些无效的驱动器!
回复

使用道具 举报

12#
发表于 2007-8-20 07:23:56 | 只看该作者
原帖由 ww111222 于 2007-8-20 01:01 AM 发表



  能否给个 例子, 我是 实在 没脑子了

就是在你的备份分区的指定路径,放置一个特征文件,然后查找这个文件,找到了,该分区就是你要找的分区。
回复

使用道具 举报

13#
 楼主| 发表于 2007-8-20 09:20:25 | 只看该作者
原帖由 lzyyj 于 2007-8-20 01:18 AM 发表


你把 for 循环改一下就行了
for %%z in (c d e f g h i j k l m n o p q r s t u v w ) do if exist %%z:\nul call 1.BAT %%z >nul
避免测试那些无效的驱动器!





   谢谢啦, 我 对 for 的 运用还是停在 照猫画猫 阶段,
回复

使用道具 举报

14#
发表于 2007-8-20 09:48:46 | 只看该作者
也来学习一下        
回复

使用道具 举报

15#
发表于 2007-8-20 13:58:50 | 只看该作者
。。ls的。灌水去水区去。。。

用判断保留设备存在为条件再查找vol?ms没有这必要。。。。直接放置一个onkey。bin类似的特征文件到分区。然后判断不更容易
回复

使用道具 举报

16#
发表于 2007-8-20 14:22:02 | 只看该作者
可以用horst的Dready先检查一下对应的盘符是否能够访问,如果不能,跳过就是了。
回复

使用道具 举报

17#
发表于 2007-8-20 14:35:06 | 只看该作者
不安装第三方软件的话。有没办法跳过。。。。。。?
回复

使用道具 举报

18#
发表于 2007-8-20 16:44:53 | 只看该作者
http://www.cn-dos.net/forum/viewthread.php?tid=12892#pid95281

看里面的内容。貌似N久前就有diskchk这种东西存在。。应该也是判断盘符存在的P处理。。不过奇怪的是。用2>nul。仍然有错误溢出。。。。郁闷了。。。。
回复

使用道具 举报

19#
发表于 2007-8-21 10:39:22 | 只看该作者
AUTOEXEC.BAT
....
:f11set 传输一键恢复系统文件→隐藏分区=========================
%RAMDRIVE%
CD\
set drives=
for %%i in (C: D: E: F: G: H: I: J: K: L: M: N: O: P: Q: R: S: T: U: V: W:) DO Call IsReady %%i
for %%i in (%drives%) DO call ChkLabel.bat %%i
if not %found%"==" goto F11_INST
WBAT BOX "找不到一键ghost恢复系统分区(SYS_RESTORE)分区的盘符!",查看分区情况,返回主菜单 # +1
IF ERRORLEVEL 2 goto main menu
IF ERRORLEVEL 1 goto lookPART

.....



ChkLabel.bat :
@echo off
set chkdrv=%1
if %chkdrv%"==" goto quit
vol %chkdrv% | lmod /L1 set label=[$!] >%RAMDRIVE%\IsExist.bat
call %RAMDRIVE%\IsExist.bat
if "SYS_RESTORE"=="%label%" set found=%chkdrv%
:quit
set chkdrv=








或者用类似方式丢个特征文件:
cdReady.bat
@echo off
if %1'==' goto quit
dready %1
if errorlevel 1 goto quit
if errorlevel 0 goto cdtag
goto quit

:cdtag
if exist "%1\BOOT\CHKCD.TAG" set CDDRIVE=%1

:quit

[ 本帖最后由 waiting 于 2007-8-26 11:43 PM 编辑 ]
回复

使用道具 举报

20#
发表于 2007-8-21 12:27:05 | 只看该作者

回复 #19 waiting 的帖子

ls的能不能把isready的内容放出来
回复

使用道具 举报

21#
发表于 2007-8-23 22:32:27 | 只看该作者
纯DOS的有什么2>null的功能?

管道操作只对stdin,stdout起作用,对stderr是无效的。即标准输入输出可以管道的,标准错误是无法过滤的。除非你用str程序改造msdos内核。
回复

使用道具 举报

22#
发表于 2007-8-24 23:28:33 | 只看该作者
没用的,ntfs下取不到磁盘卷标,这个方法autodel以前尝试过,最后还是用特征文件法.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-8-7 02:15

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表