如何使用Windows批处理文件在中查找目录并将其存储到变量中?

如何使用Windows批处理文件在中查找目录并将其存储到变量中?,windows,batch-file,Windows,Batch File,我需要找到特定目录的位置,然后将该目录路径存储到Windows批处理脚本中的变量中 我还希望命令在找到匹配项时返回(以避免在找到目录后搜索整个硬盘驱动器) 到目前为止,我已经在命令行上尝试过: dir c:\ /s /b /ad | find "DirectoryName" 问题是,即使在找到匹配项后,它也会搜索整个驱动器。另外,我仍然不知道如何将结果存储在批处理文件中的变量中。应该只有一个结果 基本上,我需要在Linux/bash上类似这样的东西: export DIRPATH=`find

我需要找到特定目录的位置,然后将该目录路径存储到Windows批处理脚本中的变量中

我还希望命令在找到匹配项时返回(以避免在找到目录后搜索整个硬盘驱动器)

到目前为止,我已经在命令行上尝试过:

dir c:\ /s /b /ad | find "DirectoryName"
问题是,即使在找到匹配项后,它也会搜索整个驱动器。另外,我仍然不知道如何将结果存储在批处理文件中的变量中。应该只有一个结果

基本上,我需要在Linux/bash上类似这样的东西:

export DIRPATH=`find / -name "DirectoryName" -print -quit`

谢谢你的关注

在批处理中,您需要
FOR/F
来获得命令的输出

FOR /F "usebackq delims=" %%p IN (`dir c:\ /s /b /ad ^| find "DirectoryName"`) DO (
  set "DIRPATH=%%p"
)
echo %DIRPATH%
由于find命令中有引号,因此需要usebackq选项。
而且有必要对管道字符进行一次转义,因为它应该对dir命令进行管道处理,而不是对for命令进行管道处理。在批处理中,您需要
for/F
来获得命令的输出

FOR /F "usebackq delims=" %%p IN (`dir c:\ /s /b /ad ^| find "DirectoryName"`) DO (
  set "DIRPATH=%%p"
)
echo %DIRPATH%
由于find命令中有引号,因此需要usebackq选项。
而且有必要转义一次管道字符,因为它应该管道化dir命令,而不是for命令

您需要对环境变量的此更改是永久性的,或者在批处理文件执行期间只是临时的?@Laf它只需要对批处理文件是临时的。找到此目录后,我需要复制几个文件。您需要对环境变量的此更改是永久性的,还是在批处理文件执行期间只是临时性的?@Laf它只需要对批处理文件是临时性的。一旦我找到这个目录,我需要复制几个文件。我遇到了一些问题。我得到的是
DirectoryName:没有这样的文件或目录
,这看起来很奇怪,因为find正在搜索从dir导出的纯文本,对吗?这对我来说很有效,
usebachq
中只有一个拼写错误,而不是
usebackq
,我在这方面遇到了一些问题。我得到了
DirectoryName:没有这样的文件或目录
,这看起来很奇怪,因为find正在搜索从dir导出的纯文本,对吗?这对我来说很有效,在
usebachq
中只有一个拼写错误,而不是
usebackq