Board logo

标题: [系统相关] [已解决]批处理怎样屏蔽“找不到操作数”等提示? [打印本页]

作者: wh1234567    时间: 2012-5-27 22:52     标题: [已解决]批处理怎样屏蔽“找不到操作数”等提示?

本帖最后由 CrLf 于 2012-6-16 01:37 编辑

当提示“找不到操作数。”的字样时就屏蔽该提示并显示我预设的固定字符,如何实现?
还有“错误: 系统找不到指定的注册表项或值”
2个分别需添加的代码

我的意思是如果批处理某个 set /a 语句代码有问题的话,例如就会提示“找不到操作数。”的字样,那么我就想屏蔽该提示并显示我预设的固定字符,例如显示“对不起,无该文件”,不知道我表达清楚没

----------------------------------------------------------------------------------------
【已解决】 不等于 [已解决],常发帖的会员请务必留意一下。此贴已代为编辑,下不为例。    By Crlf

作者: gawk    时间: 2012-5-28 00:25

自己重新开发一个命令行解释器
作者: bluewing009    时间: 2012-5-28 12:49

本帖最后由 bluewing009 于 2012-5-28 12:53 编辑

2 >nul

判断 可以用 if  defined
作者: wh1234567    时间: 2012-5-28 21:44

回复 3# bluewing009
能不能给个例子
作者: bluewing009    时间: 2012-5-29 09:38

比如 set 语句有问题
那么变量 a 就没有定义吧~

if not defind a echo 对不起,无该文件
作者: wh1234567    时间: 2012-5-30 15:58

回复 5# bluewing009

@echo off
for /f "tokens=1,2,* " %%i in ('REG QUERY "HKEY_LOCAL_MACHINE\333" ^| find /i

"444"') do set "QQPath=%%k"
set zongcishu=6
set /a shengyu=%zongcishu%-%QQPath%
echo 您的文件数为%zongcishu%   已经删除数为%QQPath%   剩余数为%shengyu%

set "FileName=高级软件.exe"
for %%a in (C D E F) do (
  if exist %%a:\nul (
    pushd %%a:\
    for /r %%b in ("*%FileName%") do (
      if /i "%%~nxb" equ "%FileName%" (
        echo.文件路径为 %%b
      )
    )
    popd
  )
)

reg delete "HKEY_LOCAL_MACHINE\333" /v "444" /f
echo 清除注册表项完成!


当提示“找不到操作数。”的字样时就屏蔽该提示并显示我预设的固定字符,如何实现?
还有“错误: 系统找不到指定的注册表项或值”
2个分别需添加的代码
判断
比如 set 语句有问题
那么变量 a 就没有定义吧~

if not defind a echo 对不起,无该文件

你能不能给我修改加上代码
作者: bluewing009    时间: 2012-5-31 10:45

回复 6# wh1234567
  1. @echo off
  2. for /f "usebackq tokens=1,2,* " %%i in (`"REG QUERY HKEY_LOCAL_MACHINE\333 ^| find /i "444" 2>nul"`) do set "QQPath=%%k"
  3. if not defined QQPath (
  4.     echo 屏蔽该提示并显示我预设的固定字符
  5.     rem 这里 你可以给QQPath重新赋值,比如=0,这样下句就不会报错了
  6.     set /a QQPath=0
  7. )
  8. set /a zongcishu=6
  9. set /a shengyu=%zongcishu%-%QQPath%
  10. echo 您的文件数为%zongcishu%   已经删除数为%QQPath%   剩余数为%shengyu%
  11. set "FileName=高级软件.exe"
  12. for %%a in (C D E F) do (
  13.   if exist %%a:\nul (
  14.     pushd %%a:\
  15.     for /r %%b in ("*%FileName%") do (
  16.       if /i "%%~nxb" equ "%FileName%" (
  17.         echo.文件路径为 %%b
  18.       )
  19.     )
  20.     popd
  21.   )
  22. )
  23. reg delete "HKEY_LOCAL_MACHINE\333" /v "444" /f
  24. echo 清除注册表项完成!
复制代码

作者: wh1234567    时间: 2012-6-1 12:56

回复 7# bluewing009

不能运行
作者: apang    时间: 2012-6-1 16:54

试试
  1. @echo off
  2. for /f "tokens=1,2,* " %%i in ('REG QUERY "HKEY_LOCAL_MACHINE\333" 2^>nul^|find /i "444"') do set "QQPath=%%k"
  3. if not "%QQPath%"=="" (
  4.   set zongcishu=6
  5.   set /a shengyu=%zongcishu%-%QQPath%
  6.   echo 您的文件数为%zongcishu%   已经删除数为%QQPath%   剩余数为%shengyu%
  7. ) else echo 预设的固定字符
  8. set "FileName=高级软件.exe"
  9. for %%a in (C D E F) do (
  10.   if exist %%a:\nul (
  11.     pushd %%a:\
  12.     for /r %%b in ("*%FileName%") do (
  13.       if /i "%%~nxb" equ "%FileName%" (
  14.         echo.文件路径为 %%b
  15.       )
  16.     )
  17.     popd
  18.   )
  19. )
  20. reg delete "HKEY_LOCAL_MACHINE\333" /v "444" /f 2>nul&&echo 清除注册表项完成!||echo 预设的固定字符
  21. pause
复制代码

作者: wh1234567    时间: 2012-6-3 13:31

本帖最后由 wh1234567 于 2012-6-3 13:34 编辑

回复 9# apang

不错,能不能再修改完美下

    文件路径为,这个如果找到该文件的话就屏蔽“操作成功结束”,如果没有的话就提示“对不起,没找到该文件路径!”的字样,另外我发现不能计算了
  set zongcishu=6
  set /a shengyu=%zongcishu%-%QQPath%
  echo 您的数为%zongcishu%   已经数为%QQPath%   剩余数为%shengyu%
这个不显示计算结果了
作者: wh1234567    时间: 2012-6-3 13:35

%zongcishu%  和  %shengyu%
不显示了,不知道是为什么
作者: apang    时间: 2012-6-3 14:53

回复 11# wh1234567

偶不知道你的真正意图,再试一次
  1. @echo off
  2. for /f "tokens=1,2,* " %%i in ('REG QUERY "HKEY_LOCAL_MACHINE\333" 2^>nul^|find /i "444"') do set "QQPath=%%k"
  3. set zongcishu=6
  4. if "%QQPath%"=="" set QQPath=0&echo 预设的固定字符
  5. set/a shengyu=%zongcishu%-%QQPath%
  6. echo 您的文件数为%zongcishu%   已经删除数为%QQPath%   剩余数为%shengyu%
  7. set "FileName=高级软件.exe"
  8. for %%a in (C D E F) do (
  9.   if exist %%a:\nul (
  10.     pushd %%a:\
  11.     for /r %%b in ("*%FileName%") do (
  12.       if /i "%%~nxb" equ "%FileName%" set flag=1&echo.文件路径为 %%b
  13.     )
  14.     popd
  15.   )
  16. )
  17. if not "%flag%"=="1" echo 对不起,没找到该文件路径!
  18. reg delete "HKEY_LOCAL_MACHINE\333" /v "444" /f >nul 2>nul&&echo 清除注册表项完成!||echo 预设的固定字符
  19. pause
复制代码

作者: garyng    时间: 2012-6-3 17:51

那些错误信息应该不能屏蔽的(应该)
命令行似乎把错误信息输出到stderr而不是stdout
据我所知 stderr不能被重定向
作者: wh1234567    时间: 2012-6-3 19:18

本帖最后由 wh1234567 于 2012-6-3 19:33 编辑

回复 12# apang


    太感谢您了,完美了,呵呵呵,能不能再帮我看看http://www.bathome.net/thread-16917-1-1.html 里的11楼问题,我等了好久没看到答案了,2个新建和1个追加;判断有就跳过并提示该设置已经有了无需重新设置的字样,如果判断是没有的话就新建或追加并提示相应的设置成功;这3个尽量弄成3个分段开的那种,要不我怕看不懂,再次感谢了……
作者: wh1234567    时间: 2012-6-4 15:23

回复 12# apang


http://www.bathome.net/thread-16917-2-1.html
http://www.bathome.net/thread-17144-1-1.html
你帮我看看这2个问题吧




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2