【问题标题】:file path is not getting assigned to variable in cmd文件路径未分配给 cmd 中的变量
【发布时间】:2020-10-24 23:23:48
【问题描述】:

在 cmd 中,我想将文件的文件路径分配给变量名 filePath,例如 'test.txt',不知道完整的文件位置,它只知道某个文件夹,所以我使用 dir /b /a /s "test.txt"。我正在使用以下语法:

set filePath=C:\Users\kadamr\AppData\Local\Test>dir /b /a /s "test.txt"

当我回显 filePath 的值时,我得到的是语法而不是 filePath。

即:C:\Users\kadamr\AppData\Local\Test>dir /b /a /s "test.txt"

我错过了什么?

【问题讨论】:

  • 批量你不能这样做。您需要一个for /f 循环来捕获命令的输出。您是否真的尝试包含提示 C:\Users\kadamr\AppData\Local\Test>?是什么让你产生了这个想法?
  • 我是命令行新手。 dir /b /a /s "test.txt" 在命令行中给出了文件的路径。我想存储这个输出,以便我可以在需要时使用它。所以尝试了这个东西。
  • 访问链接,我给你了。它解释了如何存储它。
  • 最简单的for /F "delims=" %%I in ('dir "%LocalAppData%\test.txt" /A-D /B /S 2^>nul') do set "filePath=%%~dpI"呢?请注意,在本地应用程序数据目录或其任何子目录中找到的至少一个名为 test.txt 的文件上,文件路径在环境变量 filePath 的末尾分配有反斜杠。在命令提示符窗口cmd /?、dir /? 和for /? 中运行,并从上到下仔细阅读每个命令的输出帮助。注意:FOR 在' 和%ComSpec% /c 之间运行命令行,并在后台附加命令行。

标签: batch-file cmd command-line


【解决方案1】:

如果它始终位于用户的主目录下,请使用 USERPROFILE 变量作为搜索的基本目录。为什么在没有指定属性的情况下使用/a?另外,请记住,基目录下的某处可能存在多个test.txt 文件。

@ECHO OFF
SETLOCAL
SET "EXITCODE=1"
SET "BASEDIR=%USERPROFILE%\AppData\Local\Test"
FOR /F "delims=" %%A IN ('DIR /S /B "%BASEDIR%\test.txt" 2^>NUL') DO (
    ECHO COMMAND: CALL doit.exe "%%~A"
    IF ERRORLEVEL 1 (SET "EXITCODE=%ERRORLEVEL%" & GOTO TheEnd)
    SET "EXITCODE=0"
)
:TheEnd
EXIT /B %EXITCODE%

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    相关资源
    最近更新 更多