[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] [已解决]批处理有什么办法可以屏蔽出错

执行结果是正确的但是会出现 找不到文件的错误如何解决,尝试过了加入 >nul 2>nul 类似的但是没有用。
  1. :main
  2. @echo off&color 0f
  3. if not exist %temp%\~found md %temp%\~found||echo 文件夹创建失败。&pause>nul&exit
  4. :return
  5. rem 避免文件意外重复
  6. set num=%random%
  7. set "file=0"
  8. if exist %temp%\~found\found_%num%.txt (echo 发现同名文件[found_%num%.txt],正在更换,如长时间未能成功请清理文件夹 [%temp%\~found] 。&title 发现同名文件[found_%num%.txt],正在更换可用文件。&cls&goto return)
  9. cls
  10. echo.>%temp%\~found\found_%num%.txt
  11. title 全盘查找。
  12. set "var="
  13. echo 要查找的文件?[需添加文件扩展名,如查找同类文件可使用通配符*.*]
  14. echo.
  15. echo 禁止输入 [ ^| / \^" ^< ^> ? : * ] 等特殊符号。
  16. echo.
  17. set /p var=%num% 在这里输入需要查找的文件名:
  18. if not defined var (echo.&echo 值不能为空。&pause>nul&goto main)
  19. if "%var%"=="help" (goto help) else (if "%var%"=="<" (goto main) else (if "%var%"==">" (goto main) else (if "%var%"=="|" (goto main) else (if "%var%"=="*" (goto main) else (if "%var%"==":" (goto main) else (if "%var%"=="/" (goto main) else (if "%var%"=="\" (goto main) else (if "%var%"=="?" (goto main) else (if "%var%"=="exit" (exit))))))))))
  20. title 正在查找%var%中... ...
  21. echo :::::::::::::::::::: %date% / %time% Start ::::::::::::::::::::>>%temp%\~found\found_%num%.txt
  22. echo.>>%temp%\~found\found_%num%.txt
  23. echo.
  24. color 07&echo 正在全盘查找文件 [%var%]
  25. echo.
  26. for %%a in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  27. if exist %%a:\ (
  28. cd /d %%a:\
  29. for /f "delims=" %%b in ('dir /s /a-d /b %var%') do (
  30. set /a "file+=1"
  31. if exist "%%b" (
  32. echo 文件已找到。["%%b"]>>%temp%\~found\found_%num%.txt))))
  33. echo.>>%temp%\~found\found_%num%.txt
  34. find "文件已找到。" %temp%\~found\found_%num%.txt >nul||(
  35. echo 没有找到任何文件,输入 [ help ] 获取帮助。
  36. echo.
  37. )>>%temp%\~found\found_%num%.txt
  38. echo ::::::::::::::::::: %date% / %time% Finished :::::::::::::::::::>>%temp%\~found\found_%num%.txt
  39. title 共找到 [ %file% ] 个文件,已生成文本报告。
  40. color 0f&type %temp%\~found\found_%num%.txt
  41. echo.
  42. echo 查找完毕,共找到 [ %file% ] 个文件,已生成文本报告。
  43. echo.
  44. echo [%temp%\~found\found_%num%.txt]&pause>nul
  45. goto main
  46. :help
  47. title 帮助。
  48. cls
  49. echo.
  50. echo 查找时输入尽量正确的文件+扩展名,如 [ WeChat.exe ]
  51. echo.
  52. echo 如需查找同类文件如图片 [ *.png/*.jpg ] 可使用通配符 [ * ] . [ 文件扩展名 ]
  53. echo.
  54. echo 按任意键返回。
  55. echo.
  56. pause>nul&goto main
复制代码

本帖最后由 smss 于 2019-7-27 11:56 编辑

把整个循环加括号即可(for...)1>nul 2>nul

TOP

回复 2# smss


    还是不行甚至会报错闪退=-=

TOP

本帖最后由 smss 于 2019-7-27 14:52 编辑

回复 3# 小渣飞
比如
  1. (for %%a in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  2. if exist %%a:\ (
  3. cd /d %%a:\
  4. for /f "delims=" %%b in ('dir /s /a-d /b %var%') do (
  5. set /a "file+=1"
  6. if exist "%%b" (
  7. echo 文件已找到。["%%b"]>>%temp%\~found\found_%num%.txt
  8. )))))1>nul 2>nul
复制代码
这样加 对错均不回显 需要自行根据需要修改

)))))闪退是你加的位置不对 多个括号不要加到命令尾(单括号可以 调用PS时也不可以) 要另起一行

TOP

  1. for /f "delims=" %%b in ('dir /s /a-d /b %var% 2^>nul') do
复制代码
微信:flashercs
QQ:49908356

TOP

回复 4# smss


    谢谢提醒已经解决了

TOP

回复 5# flashercs


    之前就是这样打的发现报错原来是没有加转移符多谢提醒=-=

TOP

返回列表