如何全盘查找某文件,满足一个条件就停止搜索,并把它的路径加到环境变量path中
[ Last edited by willsort on 2006-6-14 at 17:41 ]
[ Last edited by willsort on 2006-6-14 at 17:41 ]
xp,cmd
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!
@echo off
:: 把按照盘符顺序查到的第一个指定文件加入到查询路径中去
:: 因为dir命令不能查询本脚本程序所在盘符下的所有文件
:: 所以要用cd\返回到根目录下以实现全盘查询
cd\
del list.txt>nul 2>nul
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
dir /a /b /s %%i:test.txt>list.txt 2>nul && goto :add
)
echo 不存在该文件
pause
:add
for /f %%i in (list.txt) do path=%path%;%%i
del list.txt>nul 2>nul
path
pause
@echo off
:: 把按照盘符顺序查到的第一个指定文件加入到查询路径中去
:: 当路径带空格时不能正确执行
del list.txt>nul 2>nul
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
dir /a /b /s %%i:\test.txt>list.txt 2>nul && goto :add
)
echo 不存在该文件
pause && goto :eof
:add
for /f %%i in (list.txt) do (
find "test.txt" list.txt>nul 2>nul && path=%path%;%%i && goto end
)
goto :eof
:end
del list.txt>nul 2>nul
path
pause
@echo off
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
(for /f "delims=" %%p in ('dir /a /b /s %%i:\test.txt') do (
set path=%path%;%%p&&goto :eof
)) 2>nul
)
echo 不存在该文件
pause && goto :eof
@echo off
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
(for /f "delims=" %%P in ('dir /a /b /s %%i:\test.txt') do (
set path=%path%;%%~dpsP&&goto :eof
)) 2>nul
)
echo 不存在该文件
pause && goto :eof
@echo off
setlocal enabledelayedexpansion
for %%i in (D E F G H I) do (
(for /f "delims=" %%p in ('dir /a /b /s %%i:\1.rar') do (
set var=%%p&&goto :loop
)) 2>nul
)
:loop
set "route=%var%"
set layers_discard=1
if "%route:~-1%"=="\" set "route=%route:~0,-1%"
for /l %%i in (1,1,%layers_discard%) do call :intercept "%%route%%"
:end
echo "%route%"
pause
goto :eof
:intercept
for /f "delims=" %%i in (%1) do set "route=%%~dpi"
if "%route:~-2,1%"==":" (goto end) else set "route=%route:~0,-1%"
goto :eof