中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-21 02:37
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » (已解决)如何隐藏for搜索文件过程中显示的结果 查看 2,031 回复 23
16 发表于 2007-10-10 21:23 ·  中国 江苏 常州 武进区 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线
@echo off
setlocal enabledelayedexpansion
set "aa_dir="
for %%a in (F E D C) do (
for /f "delims=" %%i in ('dir /a /b /s "%%a:\avp.exe"2^>nul') do if not defined aa_dir set aa_dir=%%~dpi
)
start "" %aa_dir%

pause

这个意思??
17 发表于 2007-10-10 23:13 ·  中国 河北 保定 联通
初级用户
积分 114
发帖 49
注册 2006-10-08 06:47
19年会员
UID 64907
状态 离线
Originally posted by terse at 2007-10-10 21:23:
@echo off
setlocal enabledelayedexpansion
set "aa_dir="
for %%a in (F E D C) do (
for /f "delims=" %%i in ('dir /a /b /s "%%a:\avp.exe"2^>nul') do if not define ...

多谢。但还是不成,提示“系统找不到文件 C:\Documents。”
18 发表于 2007-10-10 23:16 ·  中国 天津 电信
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
19年会员
UID 75624
性别 男
状态 离线
start "" "%aa_dir%"

start没加引号而已。
19 发表于 2007-10-10 23:42 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
@echo off
for %%i in (F E D C) do (
dir /a /b /s %%i:\avp.exe|find /i "avp.exe">temp.txt
if not errorlevel 1 goto end
)
echo 没找到avp.exe
pause
:end
cls
set /p Program=<temp.txt
echo start "%Program%"
pause
第一高手 第二高手

20 发表于 2007-10-11 00:16 ·  中国 河北 保定 联通
初级用户
积分 114
发帖 49
注册 2006-10-08 06:47
19年会员
UID 64907
状态 离线
Originally posted by fastslz at 2007-10-10 23:42:
@echo off
for %%i in (F E D C) do (
dir /a /b /s %%i:\avp.exe|find /i "avp.exe">temp.txt
if not errorlevel 1 goto end
)
echo 没找到avp.exe
pause
:end
cls
set /p ...

这个可以了,但是无法解决路径名空格的问题。
21 发表于 2007-10-11 00:34 ·  中国 湖北 武汉 中国科学院武汉分院
银牌会员
★★★
积分 1,187
发帖 555
注册 2006-12-21 07:35
19年会员
UID 74129
性别 男
状态 离线
Originally posted by bd540 at 2007-10-10 13:17:
这段代码运行时显示“设备没有准备好”“找不到文件”等信息,如何将这些信息隐藏呢?我把>NUL加了几个地方都提示错误。
for %%a in (Z Y X W ...



这个问题有人问过的
我当时给出了解决办法

其实就是这样的格式:----可以处理含有空格文件名和路径

for "delims=" %%a in (xx) do ( ...... ) >nul 2>nul

...... 代表你要做的一切操作,不论多少行,多少命令都可以的;

那个">nul 2>nul"一定要接在for...do (...) 的最后一个括号 ")" 的后面.
这样可以屏蔽任何信息!

看一个实例:


@echo off

for /f "delims=" %%i in ("%cd%") do (
echo %%i
dir c:\
dir x:\

) >nul 2>nul




[ Last edited by scriptor on 2007-10-11 at 12:36 AM ]
22 发表于 2007-10-11 00:37 ·  中国 湖北 武汉 中国科学院武汉分院
银牌会员
★★★
积分 1,187
发帖 555
注册 2006-12-21 07:35
19年会员
UID 74129
性别 男
状态 离线
Originally posted by bd540 at 2007-10-11 00:16:

这个可以了,但是无法解决路径名空格的问题。



你的是把所有显示信息放到一个临时文件了
呵呵....

在文件了不还是会有!!
23 发表于 2007-10-11 02:27 ·  中国 河北 保定 联通
初级用户
积分 114
发帖 49
注册 2006-10-08 06:47
19年会员
UID 64907
状态 离线
已经解决:
1、隐藏提示:那个">nul 2>nul"一定要接在for...do (...) 的最后一个括号 ")" 的后面.
2、空格问题:按照fastslz的代码,加入替换字符代码后,采用去掉*.exe后加“”解决。

多谢回复此帖的众多朋友!!!
24 发表于 2007-10-13 15:18 ·  中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线
Originally posted by bd540 at 2007-10-10 23:13:

多谢。但还是不成,提示“系统找不到文件 C:\Documents。”


最后忘记加个“”

@echo off
setlocal enabledelayedexpansion
set "aa_dir="
for %%a in (F E D C) do (
for /f "delims=" %%i in ('dir /a /b /s "%%a:\avp.exe"2^>nul') do if not defined aa_dir set aa_dir=%%~dpi
)
start "" "%aa_dir%"

我这里测试通过
论坛跳转: