Board logo

标题: (已解决)如何隐藏for搜索文件过程中显示的结果 [打印本页]

作者: bd540     时间: 2007-10-10 13:17    标题: (已解决)如何隐藏for搜索文件过程中显示的结果

这段代码运行时显示“设备没有准备好”“找不到文件”等信息,如何将这些信息隐藏呢?我把>NUL加了几个地方都提示错误。
for %%a in (Z Y X W V U T S R Q P O N M L K J I H G F E D C) do for /f "delims=" %%b in ('dir /s/b/a %%a:\AVP.EXE') do if exist "%%b" set xt=%%a:
for /f "usebackq delims=/" %%i in (`dir /s/a-d/b %xt%\AVP.EXE`) do set aa_dir=%%~dpi
cd /d %aa_dir%
[ Last edited by bd540 on 2007-10-11 at 02:28 AM ]
作者: wudixin96     时间: 2007-10-10 13:40
2>nul
作者: bd540     时间: 2007-10-10 13:57


  Quote:
Originally posted by wudixin96 at 2007-10-10 13:40:
2>nul

多谢,请告诉具体加在什么位置吗?
作者: wudixin96     时间: 2007-10-10 14:23
dir哪里
作者: bd540     时间: 2007-10-10 14:37


  Quote:
Originally posted by wudixin96 at 2007-10-10 14:23:
dir哪里

不成啊,你能帮把我把改好的贴出来吗?多谢了。
作者: wudixin96     时间: 2007-10-10 14:44
你的目的是不是想找avp.exe的所在目录,然后切换到该目录

是吧??
作者: bd540     时间: 2007-10-10 14:59    标题: 回复 #6 wudixin96

是的。
作者: wudixin96     时间: 2007-10-10 15:12
@echo off
for %%a in (Z Y X W V U T S R Q P O N M L K J I H G F E D C) do (
  dir /a /b /s "%%a:\avp.exe">nul 2>nul
  if not errorlevel 1 for /f "delims=" %%i in ('dir /a /b /s "%%a:\avp.exe"') do start "" "%%~dpi"
)
pause

这个意思??
作者: bd540     时间: 2007-10-10 15:31


  Quote:
Originally posted by wudixin96 at 2007-10-10 15:12:
@echo off
for %%a in (Z Y X W V U T S R Q P O N M L K J I H G F E D C) do (
  dir /a /b /s "%%a:\avp.exe">nul 2>nul
  if not errorlevel 1 for /f "delims=" %%i in ('dir  ...

多谢,OK。
作者: bd540     时间: 2007-10-10 15:40
还有一个问题,你这个命令是大开所有搜索到的文件,如何只打开搜索到的第一个?
作者: wudixin96     时间: 2007-10-10 15:44
那就找到第一个就start后,exit罗。
作者: bd540     时间: 2007-10-10 16:49


  Quote:
Originally posted by wudixin96 at 2007-10-10 15:44:
那就找到第一个就start后,exit罗。

GOTO行不行?
作者: bd540     时间: 2007-10-10 17:26


  Quote:
Originally posted by wudixin96 at 2007-10-10 15:44:
那就找到第一个就start后,exit罗。

搞不掂啊,盼复。
作者: wudixin96     时间: 2007-10-10 17:51
你是怎么写的??
作者: bd540     时间: 2007-10-10 17:56


  Quote:
Originally posted by wudixin96 at 2007-10-10 17:51:
你是怎么写的??

:P我对DOS很不熟悉,一些基本命令都不熟悉。上述代码还是搜索论坛自己拼凑起来的,所以还是请你给出完整命令:D
作者: terse     时间: 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 defined aa_dir set aa_dir=%%~dpi
)
start "" %aa_dir%

pause

这个意思??
作者: bd540     时间: 2007-10-10 23:13


  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。”
作者: wudixin96     时间: 2007-10-10 23:16
start "" "%aa_dir%"

start没加引号而已。
作者: fastslz     时间: 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 Program=<temp.txt
echo start "%Program%"
pause
作者: bd540     时间: 2007-10-11 00:16


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

这个可以了,但是无法解决路径名空格的问题。
作者: scriptor     时间: 2007-10-11 00:34


  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 ]
作者: scriptor     时间: 2007-10-11 00:37


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

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

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

在文件了不还是会有!!
作者: bd540     时间: 2007-10-11 02:27
已经解决:
1、隐藏提示:那个">nul 2>nul"一定要接在for...do (...) 的最后一个括号 ")" 的后面.
2、空格问题:按照fastslz的代码,加入替换字符代码后,采用去掉*.exe后加“”解决。

多谢回复此帖的众多朋友!!!
作者: terse     时间: 2007-10-13 15:18


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

我这里测试通过