将命令存储在批处理文件中的变量中

Storing command results in a variable in batch file

我需要搜索一个远程目录 (psexec),然后将结果存储在一个变量中。

我有一个目录,里面有许多其他文件夹,每个文件夹都包含一些我需要执行的文件。网络上的每台计算机都有我需要的文件在不同的目录中。

例如,我会使用

搜索(使用 psexec)
dir *Google_Chrome_49_0_2623_112_X64_EN_R01* /s

我会得到结果

 Volume in drive C is OSDISK
 Volume Serial Number is C8AD-F658

 Directory of C:\Windows\ccmcachea

12/04/2016  01:52 PM               458 Google_Chrome_49_0_2623_112_X64_EN_R01.cab
14/04/2016  05:26 PM            69,632 Google_Chrome_49_0_2623_112_X64_EN_R01.mst
               2 File(s)         70,090 bytes

     Total Files Listed:
               2 File(s)         70,090 bytes
               0 Dir(s)   4,726,218,752 bytes free

现在我需要将同一个批处理文件 cd 到目录 2a 并在里面执行一个脚本。

有什么方法可以将“2a”存储在变量中以便我可以 cd 进入它吗?

目前我分两步进行,批处理会显示搜索结果,然后提示输入目录:

psexec \%PCNAME% cmd /c (cd ..\ccmcache ^& dir *Google_Chrome_49_0_2623_112_X64_EN_R01* /s)

SET DIRECTORY=%1
SET /P DIRECTORY=Enter Directory: 

问题是,我需要它完全自动化。我该怎么做?

注意:我查看了其他几个主题,none 的答案似乎对我有所帮助。看来 psexec 的结果不会流回本地接口。
我试过:

for /f %%a in (psexec \%PCNAME% cmd /c (cd ..\ccmcache ^& dir *Google_Chrome_49_0_2623_112* /s ^| FIND "Directory of C:\Windows\ccmcache\") DO (
 SET v=%%a
)

尝试将整个结果行设置为一个 var,但是当我检查 var 时,它是空的。

我刚刚发现您可以使用 pushd 和 运行 那里的搜索映射到网络共享,而不是在您需要它之前处理 psexec。

所以我的代码现在看起来像:

pushd \%PCNAME%\C$\Windows\ccmcache

for /f "tokens=3" %%a in ('dir *Google_Chrome_49_0_2623_112* /s ^| FIND "Directory"') DO (
 set v=%%a
 for /f "tokens=4 delims=\" %%m in ('echo !v!') do (set x=%%m)
)
popd

%x% 现在是我正在搜索的目录。