将DIR的内容分配给变量

时间:2015-04-26 02:39:03

标签: windows batch-file command-line

我写了以下cmd

Label

返回存在于该dir位置的以下单个文件夹

DIR /B "%appdata%\Mozilla\Firefox\Profiles"

我希望将 4jktnrk2.default 存储在变量中。

我尝试了以下

4jktnrk2.default

SET A=DIR /B "%appdata%\Mozilla\Firefox\Profiles"

然而,这些都不起作用。

我也认为最好使用 FOR 循环,因为该目录中只有一个文件夹。

3 个答案:

答案 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 ...命令是一种效率较低的方法,仅在forfor /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