【问题标题】:How to get the location of a file in a variable in a batch file?如何在批处理文件的变量中获取文件的位置?
【发布时间】:2016-06-16 04:43:10
【问题描述】:

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

请帮忙。

【问题讨论】:

  • 如果根目录A下有多个同名文件怎么办?
  • 没有。就我而言,只有一个。
  • for /f "delims=" %A in ('dir C:\a\setup.exe /s /b') do echo %A

标签: windows batch-file cmd command command-prompt


【解决方案1】:

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

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
)

【讨论】:

    【解决方案2】:

    让命令DIR在目录树中找到setup.exe,并使用命令FOR处理DIR的输出来分配找到的@987654323 @ 带有环境变量的完整路径。

    @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%
    )
    

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

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

    另请参阅Using command redirection operators 以了解通过将错误消息重定向到设备NUL2>nul 与转义重定向运算符 >^ 应用于命令 DIR 的执行,而不是产生语法错误,因为在 中指定了重定向set / command / file 命令FOR的规范是不可能的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多