如何在批处理文件中的变量中获取文件的位置?

How to get the location of a file in a variable in a batch file?

Windows 命令提示符查询: 我有一个根目录 "A"。 "A" 中还有其他几个子目录。 现在在这些目录中的某处有一个名为 "setup.exe" 的文件。 现在我想要从 A 到文件的完整路径。 稍后我将在我的批处理文件中需要这个路径。 所以我希望它存储在一些变量中。 我找到了获取路径但无法将其存储到某个变量的方法。

请帮忙。

试试这个,它可能对你有帮助。

for /r "C:\directory path" %%a in (*) do if "%%~nxa"=="setup.exe" set variable_to_store_path=%%~dpnxa
if defined variable_to_store_path (
echo %variable_to_store_path%
) else (
echo File not found
)

让命令DIR在目录树中找到setup.exe并使用命令FOR处理[=32=的输出]DIR 将找到的 setup.exe 和完整路径分配给环境变量。

@echo off
set "SetupFile="
for /F "delims=" %%# in ('dir C:\a\setup.exe /A-D /B /S 2^>nul') do set "SetupFile=%%#"
if "%SetupFile%" == "" (
    echo Could not find setup.exe.
) else (
    echo Found %SetupFile%
)

要了解使用的命令及其工作原理,请打开命令提示符 window,在其中执行以下命令,并仔细阅读为每个命令显示的所有帮助页面。

  • echo /?
  • dir /?
  • for /?
  • if /?
  • set /?

另请参阅 Using command redirection operators 以了解如何抑制命令 DIR 在未找到任何 setup.exe 通过使用 2>nul 将错误消息重定向到设备 NUL 并使用转义重定向运算符 >^ 应用于执行命令 DIR 而不是产生语法错误,因为在 set / command / 中指定了重定向文件 命令规范 FOR 不可能。