在批处理文件中,我试图获取命令的输出并将其保存到变量。
我的命令的目标是计算某个文件夹中的文件夹数量。
cd path\to\my\folder
才能进入当前目录。不幸的是,我无法执行此命令,因为path\to\my\folder
实际上是UNC路径(\\path\to\my\folder
),而且Windows cmd不支持cd \\some\UNC\path
。所以我尝试做以下事情:
要获取文件夹数量,我使用:
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...
)周围的引号,给我带来同样的错误。
我是否在正确的路径上检索变量中的输出?我该怎么做才能解决错误信息?
或者可能有一种更简单的方法在变量中设置命令输出?
答案 0 :(得分:4)
您可以使用您首先提到的答案。您没有cd
,但可以使用pushd
为UNC路径分配一个临时驱动器号,当您执行popd
时将会释放该驱动器号。
所以实质上:
pushd \\server\path
set count=0
for /d %%x in (*) do set /a count+=1
popd