我写了以下cmd
Label
返回存在于该dir位置的以下单个文件夹
DIR /B "%appdata%\Mozilla\Firefox\Profiles"
我希望将 4jktnrk2.default 存储在变量中。
我尝试了以下
4jktnrk2.default
和
SET A=DIR /B "%appdata%\Mozilla\Firefox\Profiles"
然而,这些都不起作用。
我也认为最好不使用 FOR 循环,因为该目录中只有一个文件夹。
答案 0 :(得分:1)
@echo off
setlocal enableDelayedExpansion
set "dir_c="
for /f "delims=" %%a in ('DIR /B "%appdata%\Mozilla\Firefox\Profiles"') do (
if "!dir_c!" equ "" (
set "dir_c=%%~a"
) else (
set "dir_c=!dir_c!;%%~a"
)
)
echo %dir_c%
您没有其他选择,只能使用FOR /F
。没有unix样式可以将命令结果批量分配给变量。
答案 1 :(得分:1)
对不起。我认为此请求的真实目标是"在变量"中获取单个文件夹。下面的代码段是这样做的:
for /D %%a in ("%appdata%\Mozilla\Firefox\Profiles\*") do set "A=%%a"
批处理文件中进程文件夹的自然方式是通过for /D
命令(与通过普通for
命令处理文件的自然方式相同)。 for /F ... in ('dir /B ...
命令是一种效率较低的方法,仅在for
或for /D
命令未提供所需结果时使用。
答案 2 :(得分:1)
你真的应该使用FOR / D或FOR / F作为Aacini和npocmaka的建议。
如果您坚持不想使用FOR,那么您将不得不求助于临时文件:
dir /b "%appdata%\Mozilla\Firefox\Profiles" >folder.tmp
set /p "a=" <folder.tmp
del folder.tmp