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

[代码合集] 如和重定向for /f %i in (`dir`) do ..命令中dir的输出

1.如何捕获dir命令执行后的错误输出
2.如何捕获dir命令执行后的errorlevel

回复 1# vinwin


最好举个栗子,一般DIR没限制条件是不会报错的。

TOP

回复 2# yakeyun


找不到文件的时候会报错
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b "FileNotExist" 2^>^&1') do (
  3.     echo 捕获到:%%i
  4. )
  5. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 1# vinwin


@echo off
setlocal enabledelayedexpansion
for /f "tokens=* delims=, " %%a in ('dir /a /s /b C:\intel\PieExtension.cat ') do (
if %errorlevel% == 0 (
echo 已找到文件
) else (
echo 找不到文件
)
)
pause>nul

TOP

本帖最后由 vinwin 于 2021-11-6 18:41 编辑

回复 4# yakeyun

谢谢,2楼转义有效
您提供的代码,这里的errorlevel任何情况都是0啊,并没有捕获dir执行情况的errorlevel

TOP

回复 3# Batcher


    奇怪了..开始试过转义不行,现在又可以了。

请问如何捕获dir的errorlevel?
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "usebackq delims=" %%i in (`dir  /s /b "D:\test\*xxx*" 2^>nul `) do (
  4. echo !errorlevel!
  5. )
  6. pause
复制代码
以上代码测试后dir无论是否找到文件errorlevel都是0(找不到的情况应该是1),所以这里的errorlevel不是dir的怀疑是for的)

TOP

回复 6# vinwin
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b "1.txt" 2^>^&1') do (
  3.     if "%%i" equ "找不到文件" (
  4.         echo dir命令没有找到文件
  5.     ) else (
  6.         echo dir命令找到了文件
  7.     )
  8. )
  9. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表