我想检索一个文件名并将其分配给一个变量,以便我可以在脚本中进一步使用它。
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
变量设置的等号前后有空格,只需将其删除并使用下面的方法即可。
@ECHO ON
set directoryName=dir Docum?nt*
echo %directoryName%
Run Code Online (Sandbox Code Playgroud)
错误的
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)
| 归档时间: |
|
| 查看次数: |
17134 次 |
| 最近记录: |