标题: (已解决)如何隐藏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%"
我这里测试通过