如何在批处理中找到特定文件名并更改为该目录?

时间:2016-09-07 03:08:01

标签: windows batch-file cmd

我正在编写一个批处理文件,它将获取特定文件的目录(curl_for_64bit.exe)。我尝试使用find命令,但它不起作用。它基本上获取文件的目录,更改到该目录,以便可以复制它。

3 个答案:

答案 0 :(得分:0)

您可以使用FOR命令遍历目录树,检查是否存在所需文件,直到找到它为

for /r /d %%a in (*) do (
  if exist %%a\curl_for_64bit.exe (
    pushd %%a
    goto :eof
  )
)

答案 1 :(得分:0)

以下脚本搜索以curl_for_64bit.exe为根的目录树中的文件C:\ROOT\,并更改为找到的文件实际所在的父目录:

for /F "delims=" %%F in ('dir /B /S /A:-D "C:\ROOT\curl_for_64bit.exe"') do (
    cd /D "%%~dpF"
)

或者直接在cmd中输入此命令行:

for /F "delims=" %F in ('dir /B /S /A:-D "C:\ROOT\curl_for_64bit.exe"') do @cd /D "%~dpF"

要了解~dp变量for的{​​{1}}修饰符的含义及其工作原理,请打开一个新的命令提示符窗口,键入%%F并阅读帮助文本(特别参见最后一节)。

答案 2 :(得分:0)

您可以使用像@Ken White这样的命令,然后使用其他代码来获取文件的目录。

这是我的代码

rem you should go to the specific root directory(like c d e etc.)
cd /d c:\
dir /s /a /b curl_for_64bit.exe >tmp.txt                                                
set /P file_path=<tmp.txt                                                   
del tmp.txt

cd /d %file_path%\..

如果您只想复制这些文件,为什么要转到文件目录?