【发布时间】:2012-04-09 20:28:54
【问题描述】:
例如,我将提供一个文件名,并且我希望脚本在计算机中搜索该文件并返回变量的路径。伪调用是:
设置 pathToMyFile = SomeSearchFunction(myFileToSearchFor.ext)
谢谢
【问题讨论】:
-
对单个文件很容易做到。如果找到多个文件,你想做什么?
标签: file search variables batch-file return
例如,我将提供一个文件名,并且我希望脚本在计算机中搜索该文件并返回变量的路径。伪调用是:
设置 pathToMyFile = SomeSearchFunction(myFileToSearchFor.ext)
谢谢
【问题讨论】:
标签: file search variables batch-file return
dir /b /s "c:\myFileToSearchFor.ext" 将列出该文件在 C: 驱动器中的每一次出现,包括完整的路径信息。
该文件可能存在于多个位置。
此批处理命令会将变量设置为最后找到的位置:
for /f "delims=" %%F in ('dir /b /s "c:\myFileToSearchFor.ext"') do set "pathToMyFile=%%~dpF"
此批处理脚本会将变量设置为第一个找到的位置:
for /f "delims=" %%F in ('dir /b /s "c:\myFileToSearchFor.ext"') do (
set "pathToMyFile=%%~dpF"
goto :foundIt
)
:foundIt
【讨论】:
据我所知,没有任何功能/程序可以执行此操作。如果您需要效率,您可以编写一个程序,对所有目录进行花哨的树搜索。但是,我确实找到了批量解决方案!
@echo off
for /r "C:\somebasepath" %%i in (*) do (
if "%%~nxi" EQU "%1" (
echo %%i
break
)
)
将要查找的文件作为第一个参数传递给批处理文件。但是如果它在一个很深的目录中,这是非常非常慢的。
【讨论】:
break 更改为 goto :eof 或类似名称 (2) 使用 if 命令的 /i 选项。
for /r "%~dp1" %%a in (*),然后检查if /i %%~nxa==%~nx1