将目录名称分配给cmd批处理中的变量

Mav*_*ven 6 batch cmd.exe

我想检索一个文件名并将其分配给一个变量,以便我可以在脚本中进一步使用它。

set directoryName = dir Docum?nt*
echo %directoryName%
Run Code Online (Sandbox Code Playgroud)

但是一旦我执行批处理文件,我得到的就是这个。

D:\ >a.bat
D:\ >set directoryName = dir Docum?nt*
D:\ >echo
ECHO is on.
Run Code Online (Sandbox Code Playgroud)

如何确保我的变量已被分配值,即目录名称,以便我可以开始编写进一步的脚本。

我的a.bat包含:

set directoryName=dir Docum?nt*
echo %directoryName%
Run Code Online (Sandbox Code Playgroud)

删除空格后:

D:\Workspace>set directoryName=dir Docum?nt*

D:\Workspace>echo dir Docum?nt*
dir Docum?nt*
Run Code Online (Sandbox Code Playgroud)

我猜,vairbale 已经被分配了整个值以及命令关键字而不是结果。我希望输出是目录名称,即Documentation

Vom*_*yle 4

变量设置的等号前后有空格,只需将其删除并使用下面的方法即可。

@ECHO ON

set directoryName=dir Docum?nt*
echo %directoryName%
Run Code Online (Sandbox Code Playgroud)

错误的

  • set directoryName = dir Docum?nt*

正确的

  • set directoryName=dir Docum?nt* 在此输入图像描述

隐式 FOR 循环

FOR /F "TOKENS=*" %%F IN ('DIR /B /AD "Docum?nt*"') DO SET directoryName=%%~F
Run Code Online (Sandbox Code Playgroud)

递归 FOR 循环

FOR /F "TOKENS=*" %%F IN ('DIR /B /AD /S "Docum?nt*"') DO SET directoryName=%%~F
Run Code Online (Sandbox Code Playgroud)

更多资源