Board logo

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

作者: vinwin    时间: 2021-11-6 14:27     标题: 如和重定向for /f %i in (`dir`) do ..命令中dir的输出

1.如何捕获dir命令执行后的错误输出
2.如何捕获dir命令执行后的errorlevel
作者: yakeyun    时间: 2021-11-6 15:25

回复 1# vinwin


最好举个栗子,一般DIR没限制条件是不会报错的。
作者: Batcher    时间: 2021-11-6 15:37

回复 2# yakeyun


找不到文件的时候会报错
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b "FileNotExist" 2^>^&1') do (
  3.     echo 捕获到:%%i
  4. )
  5. pause
复制代码

作者: yakeyun    时间: 2021-11-6 17:01

回复 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
作者: vinwin    时间: 2021-11-6 18:31

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

回复 4# yakeyun

谢谢,2楼转义有效
您提供的代码,这里的errorlevel任何情况都是0啊,并没有捕获dir执行情况的errorlevel
作者: vinwin    时间: 2021-11-6 18:39

回复 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的)
作者: Batcher    时间: 2021-11-6 19:22

回复 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
复制代码





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