找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 21566|回复: 6

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

[复制链接]
发表于 2021-11-6 14:27:50 | 显示全部楼层 |阅读模式
1.如何捕获dir命令执行后的错误输出
2.如何捕获dir命令执行后的errorlevel
发表于 2021-11-6 15:25:04 | 显示全部楼层
回复 1# vinwin


最好举个栗子,一般DIR没限制条件是不会报错的。
发表于 2021-11-6 15:37:13 | 显示全部楼层
回复 2# yakeyun


找不到文件的时候会报错
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b "FileNotExist" 2^>^&1') do (
  3.     echo 捕获到:%%i
  4. )
  5. pause
复制代码
发表于 2021-11-6 17:01:59 | 显示全部楼层
回复 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
 楼主| 发表于 2021-11-6 18:31:31 | 显示全部楼层
本帖最后由 vinwin 于 2021-11-6 18:41 编辑

回复 4# yakeyun

谢谢,2楼转义有效
您提供的代码,这里的errorlevel任何情况都是0啊,并没有捕获dir执行情况的errorlevel
 楼主| 发表于 2021-11-6 18:39:59 | 显示全部楼层
回复 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的)
发表于 2021-11-6 19:22:31 | 显示全部楼层
回复 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
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 02:49 , Processed in 0.031809 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表