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

[已解决]批处理for语句中如果%%a值为空,怎样屏蔽缺省的输出信息?

例如:
  1. @echo off
  2. (for /f %%a in ('dir /b d:\*.bak') do echo %%a
  3. )>2 >nul
  4. pause
复制代码
假如set内的结果为空,%%a也就为空,for会输出“找不到文件”怎样才能屏蔽for返回的这个信息?
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 6# Hello123World


楼主的问题在于,当D盘下没有.bak文件时,dir命令会有提示信息出来。跟echo关系不大。

TOP

回复 7# Hello123World


    是for /r的,一时笔误

TOP

回复 3# 601997526


    for /f 可以这么用?

TOP

本帖最后由 Hello123World 于 2011-10-7 18:15 编辑
  1. @echo off
  2. for /f %%a in ('dir /b d:\*.bak') do echo.%%a
  3. pause
复制代码
echo 空格变为
echo.%%a

TOP

回复 4# awk


    没什么意思,只是1楼原贴的就是这样的,我只是复制了而已

TOP

回复 3# 601997526


do后面用@echo是什么意思?

TOP

本帖最后由 601997526 于 2011-10-7 19:05 编辑

如果LZ只是想输出.bak文件,完全可以不用dir命令
  1. @echo off
  2. (for /r %%a in (*.bak) do @echo %%a)>2
  3. pause
复制代码
如果是想屏蔽for的错误信息
  1. @echo off
  2. (for /f %%a in ('dir /b d:\*.bak') do @echo %%a)>2.txt 2>nul
  3. pause
复制代码
1

评分人数

    • CrLf: 乐于助人PB + 5

TOP

('dir /b d:\*.bak 2^>nul')
1

评分人数

TOP

返回列表