【问题标题】:Find file and return full path using a batch file使用批处理文件查找文件并返回完整路径
【发布时间】:2012-12-14 10:24:12
【问题描述】:

是否可以创建一个批处理文件来搜索文件名,然后返回其路径以便我可以在变量中使用它?

【问题讨论】:

  • 勾选这个以获得解决方案Link

标签: windows file batch-file directory


【解决方案1】:
for /r C:\folder %%a in (*) do if "%%~nxa"=="file.txt" set p=%%~dpnxa
if defined p (
echo %p%
) else (
echo File not found
)

如果找到了您搜索的文件,它会将变量 %p% 设置为文件的完整路径,包括名称和扩展名。

如果您只想要路径(如在没有文件的文件夹路径中),请改用set p=%%~dpa

注意:如果有超过 1 个同名文件,则该变量将设置为找到的最后一个。 for 循环行之后的脚本也不是必需的,只是为了告诉你它是否发现了什么:)

如果您想使用dir 命令执行此操作,请使用此命令,同样的规则适用

for /f "tokens=*" %%a in ('dir acad.exe /b /s') do set p=%%a

【讨论】:

  • 我更多的是按照“find acad.exe /b /s”的思路思考,但是我无法将其放入文本文件或变量中......
  • 什么意思? dir 命令无论如何都必须在 for 循环中运行,为什么不直接运行 for 循环呢?
  • 我在我的回答中添加了另一个选项来使用dir 命令,更类似于你想要的:)
  • 循环浏览所有文件并不好,尤其是当文件夹包含数百万个文件时。只需使用dir /b /s filename
【解决方案2】:

这样做:-

for /f "delims=" %%F in ('dir /b /s "C:\File.txt" 2^>nul') do set MyVariable=%%F

假设您正在 C 驱动器中搜索 File.txt

【讨论】:

  • TBH 我并没有真正理解这两个答案中的任何一个,但这一个看起来也适用于通配符(我不知道另一个没有!)所以它尝试了它并它奏效了。
  • 这并没有真正做太多的搜索,你必须知道文件和它所在的目录,这不是 OP 要求的。
猜你喜欢
  • 2022-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-01
  • 1970-01-01
  • 2011-02-02
  • 2017-12-26
相关资源
最近更新 更多