将命令输出保存到变量

时间:2011-11-17 11:22:40

标签: windows command-line batch-file cmd

在批处理文件中,我试图获取命令的输出并将其保存到变量。

我的命令的目标是计算某个文件夹中的文件夹数量。

  • 我无法使用this接受的答案中提供的技巧,因为我必须cd path\to\my\folder才能进入当前目录。不幸的是,我无法执行此命令,因为path\to\my\folder实际上是UNC路径(\\path\to\my\folder),而且Windows cmd不支持cd \\some\UNC\path
  • 我知道this回答,但我不想使用临时文件。

所以我尝试做以下事情:

  • 要获取文件夹数量,我使用:

    dir \\path\to\my\folder | find /c "<REP>"
    

    这很好,并且按照我的预期给我一个数字。

  • 要在批处理变量中检索此命令的输出,我尝试了:

    FOR /F "TOKENS=*" %%i IN ('\\path\to\my\folder | find /c "<REP>"') DO 
    SET value = %%i
    

    但没有成功,错误信息是......

      

    |出人意料。

    ...当我执行批处理文件时......

      

    %%我出乎意料。

    当我尝试直接在命令窗口中执行命令时。我试图绕过<REP>字符串(...find /c ""<REP>""') DO...)周围的引号,给我带来同样的错误。

我是否在正确的路径上检索变量中的输出?我该怎么做才能解决错误信息?
或者可能有一种更简单的方法在变量中设置命令输出?

1 个答案:

答案 0 :(得分:4)

您可以使用您首先提到的答案。您没有cd,但可以使用pushd为UNC路径分配一个临时驱动器号,当您执行popd时将会释放该驱动器号。

所以实质上:

pushd \\server\path
set count=0
for /d %%x in (*) do set /a count+=1
popd