中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » (已解决)如何隐藏for搜索文件过程中显示的结果
« [1] [2] »
作者:
标题: (已解决)如何隐藏for搜索文件过程中显示的结果 上一主题 | 下一主题
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 16 楼』:  

@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

这个意思??

2007-10-10 21:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bd540
初级用户





积分 114
发帖 49
注册 2006-10-8
状态 离线
『第 17 楼』:  



  Quote:
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。”

2007-10-10 23:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wudixin96
银牌会员





积分 1928
发帖 931
注册 2007-1-6
状态 离线
『第 18 楼』:  

start "" "%aa_dir%"

start没加引号而已。

2007-10-10 23:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 19 楼』:  

@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



第一高手    第二高手

2007-10-10 23:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bd540
初级用户





积分 114
发帖 49
注册 2006-10-8
状态 离线
『第 20 楼』:  



  Quote:
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 ...

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

2007-10-11 00:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 21 楼』:  



  Quote:
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 ]

2007-10-11 00:34
查看资料  发短消息 网志   编辑帖子  回复  引用回复
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 22 楼』:  



  Quote:
Originally posted by bd540 at 2007-10-11 00:16:

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

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

在文件了不还是会有!!

2007-10-11 00:37
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bd540
初级用户





积分 114
发帖 49
注册 2006-10-8
状态 离线
『第 23 楼』:  

已经解决:
1、隐藏提示:那个">nul 2>nul"一定要接在for...do (...) 的最后一个括号 ")" 的后面.
2、空格问题:按照fastslz的代码,加入替换字符代码后,采用去掉*.exe后加“”解决。

多谢回复此帖的众多朋友!!!

2007-10-11 02:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 24 楼』:  



  Quote:
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%"

我这里测试通过

2007-10-13 15:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: