标题: [其他] [已解决]批处理有什么办法可以屏蔽出错 [打印本页]
作者: 小渣飞 时间: 2019-7-27 10:05 标题: [已解决]批处理有什么办法可以屏蔽出错
执行结果是正确的但是会出现 找不到文件的错误如何解决,尝试过了加入 >nul 2>nul 类似的但是没有用。- :main
- @echo off&color 0f
- if not exist %temp%\~found md %temp%\~found||echo 文件夹创建失败。&pause>nul&exit
- :return
- rem 避免文件意外重复
- set num=%random%
- set "file=0"
- if exist %temp%\~found\found_%num%.txt (echo 发现同名文件[found_%num%.txt],正在更换,如长时间未能成功请清理文件夹 [%temp%\~found] 。&title 发现同名文件[found_%num%.txt],正在更换可用文件。&cls&goto return)
- cls
- echo.>%temp%\~found\found_%num%.txt
- title 全盘查找。
- set "var="
- echo 要查找的文件?[需添加文件扩展名,如查找同类文件可使用通配符*.*]
- echo.
- echo 禁止输入 [ ^| / \^" ^< ^> ? : * ] 等特殊符号。
- echo.
- set /p var=%num% 在这里输入需要查找的文件名:
- if not defined var (echo.&echo 值不能为空。&pause>nul&goto main)
-
-
- 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))))))))))
-
-
-
- title 正在查找%var%中... ...
- echo :::::::::::::::::::: %date% / %time% Start ::::::::::::::::::::>>%temp%\~found\found_%num%.txt
- echo.>>%temp%\~found\found_%num%.txt
- echo.
- color 07&echo 正在全盘查找文件 [%var%]
- echo.
- 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 (
- if exist %%a:\ (
- cd /d %%a:\
- for /f "delims=" %%b in ('dir /s /a-d /b %var%') do (
- set /a "file+=1"
- if exist "%%b" (
- echo 文件已找到。["%%b"]>>%temp%\~found\found_%num%.txt))))
- echo.>>%temp%\~found\found_%num%.txt
- find "文件已找到。" %temp%\~found\found_%num%.txt >nul||(
- echo 没有找到任何文件,输入 [ help ] 获取帮助。
- echo.
- )>>%temp%\~found\found_%num%.txt
- echo ::::::::::::::::::: %date% / %time% Finished :::::::::::::::::::>>%temp%\~found\found_%num%.txt
- title 共找到 [ %file% ] 个文件,已生成文本报告。
- color 0f&type %temp%\~found\found_%num%.txt
- echo.
- echo 查找完毕,共找到 [ %file% ] 个文件,已生成文本报告。
- echo.
- echo [%temp%\~found\found_%num%.txt]&pause>nul
- goto main
- :help
- title 帮助。
- cls
- echo.
- echo 查找时输入尽量正确的文件+扩展名,如 [ WeChat.exe ]
- echo.
- echo 如需查找同类文件如图片 [ *.png/*.jpg ] 可使用通配符 [ * ] . [ 文件扩展名 ]
- echo.
- echo 按任意键返回。
- echo.
- pause>nul&goto main
复制代码
作者: smss 时间: 2019-7-27 11:50
本帖最后由 smss 于 2019-7-27 11:56 编辑
把整个循环加括号即可(for...)1>nul 2>nul
作者: 小渣飞 时间: 2019-7-27 13:59
回复 2# smss
还是不行甚至会报错闪退=-=
作者: smss 时间: 2019-7-27 14:48
本帖最后由 smss 于 2019-7-27 14:52 编辑
回复 3# 小渣飞
比如- (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 (
- if exist %%a:\ (
- cd /d %%a:\
- for /f "delims=" %%b in ('dir /s /a-d /b %var%') do (
- set /a "file+=1"
- if exist "%%b" (
- echo 文件已找到。["%%b"]>>%temp%\~found\found_%num%.txt
- )))))1>nul 2>nul
复制代码
这样加 对错均不回显 需要自行根据需要修改
)))))闪退是你加的位置不对 多个括号不要加到命令尾(单括号可以 调用PS时也不可以) 要另起一行
作者: flashercs 时间: 2019-7-27 15:08
- for /f "delims=" %%b in ('dir /s /a-d /b %var% 2^>nul') do
复制代码
作者: 小渣飞 时间: 2019-7-27 17:41
回复 4# smss
谢谢提醒已经解决了
作者: 小渣飞 时间: 2019-7-27 17:42
回复 5# flashercs
之前就是这样打的发现报错原来是没有加转移符多谢提醒=-=
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |