将命令输出保存到variables

batch file中,我试图获取命令的输出并将其保存到variables中。

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

  • 我不能使用这个接受的答案中提供的技巧,因为我将不得不做cd path\to\my\folder到达当前目录。 不幸的是,我不能执行这个命令,因为path\to\my\folder实际上是一个UNCpath( \\path\to\my\folder ),而windows cd \\some\UNC\path不支持cd \\some\UNC\path CMD。
  • 我知道这个答案,但我不想使用临时文件。

所以我试图做到以下几点:

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

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

    这工作正常,并返回我一个数字,我所期望的。

  • 要在批量variables中检索这个命令的输出,我尝试过:

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

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

    | 是意外的。

    …当我执行batch file和…

    %%我是意外的。

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

我在正确的path检索variables中的输出? 我应该怎么做才能解决错误信息?
或者也许有一个更简单的方法来设置一个variables的命令输出?

Solutions Collecting From Web of "将命令输出保存到variables"

你可以使用你刚才提到的答案。 你不需要在那里cd ,但是你可以使用pushd来为UNC路径分配一个临时驱动器盘符,当你执行一个popd时候会被释放。

所以本质上:

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