Batch file 查找特定文件';具有for循环的完整路径 我正在编写一个批处理文件,我被困在搜索循环的中间: FOR /R %MapDirectory% %%s IN ("%FullName%") DO SET DesiredMapFilePath=%%s
我想做的是从所有子目录中的给定根目录中找到由其文件给定的文件的完整路径。可以保证只有一个具有给定名称的文件Batch file 查找特定文件';具有for循环的完整路径 我正在编写一个批处理文件,我被困在搜索循环的中间: FOR /R %MapDirectory% %%s IN ("%FullName%") DO SET DesiredMapFilePath=%%s,batch-file,Batch File,我想做的是从所有子目录中的给定根目录中找到由其文件给定的文件的完整路径。可以保证只有一个具有给定名称的文件 %MapDirectory%是根路径(例如:%~dp0\some\directory\want\start\from),而%FullName%是我要查找的文件的全名(例如:foo.txt) 上面的命令行无法找到实际存在于给定根路径的子目录中的给定文件(%MapDirectory%)。根据提供的信息,您可以使用Where命令 For/F“Delims=“%%s In( 'Where/R“%~
%MapDirectory%
是根路径(例如:%~dp0\some\directory\want\start\from
),而%FullName%
是我要查找的文件的全名(例如:foo.txt
)
上面的命令行无法找到实际存在于给定根路径的子目录中的给定文件(
%MapDirectory%
)。根据提供的信息,您可以使用Where
命令
For/F“Delims=“%%s In(
'Where/R“%~dp0some\directory\want\start\from”“foo.txt”
)不设置“DesiredMapFilePath=%%s”
[编辑]
如果在起始目录中有一个尾随反斜杠,则上面和下面的Where命令结构不起作用。(但你的问题没有答案,我的答案也没有)
对于/F“Delims=“%%s In('Where/R”%MapDirectory%”foo.txt“'
)不设置“DesiredMapFilePath=%%s”
与dir命令组合
FOR /F "tokens=*" %%s IN ('dir /b /s "%MapDirectory%\%FullName%"') DO (set DesiredMapFilePath=%%s)
谢谢你的例子。我将测试您的样品tmr。(生活在不同的时区)但现在,一个好奇的问题是,%MapDirectory%\%FullName%让我好奇,它看起来像是从当前目录中搜索文件,而不是它的子目录。
(/R
)除非有通配符,否则不会访问文件系统,所以最简单的方法是使用目录/B
(/S
)并通过为/F
解析其输出…感谢aschipfi!不知道/r仅适用于通配符。感谢您的示例。将测试它的tmr。我曾尝试在prev中使用where关键字,但当时对我来说没有任何效果。它也适用于win8吗?Windows 8不应该有任何理由不正确运行此代码。我用您的示例代码进行了测试,但不适用于我,由于某种原因,它仍然无法找到foo.txt start from\from到其子目录。不管怎样,上面的示例适合我,谢谢你的评论!我提供的代码片段没有任何问题,我经常使用相同的代码,并且更喜欢它,而不是您选择的dir
版本。我正在添加它的另一个版本,以匹配Richrd版本中使用的结构。