2016-10-25 108 views
0

我需要搜索远程目录(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\ccmcache\2a 

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 

现在我需要同一批文件复制到光盘到目录2a和执行一个脚本里面。

有没有办法将'2a'存储在一个变量中,以便我可以将其存入CD?

目前,我在2个步骤,其中一批会告诉我的搜索结果中这样做,则提示该目录:

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: 

问题是,我需要这个完全自动化。我怎样才能做到这一点?

注意:我查看了其他几个线程,但没有一个答案似乎对我有帮助。看起来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,它是空的。

+2

[如何将命令的结果存储在蝙蝠脚本中的变量中]可能的副本(http://stackoverflow.com/questions/14019274/how-to-store-result-of-a-command-in-一个变量在蝙蝠脚本) –

+0

已经检查了几个线程(包括链接的一个),他们没有帮助。编辑问题的细节。 –

回答

0

我刚刚发现可以使用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%是现在我在寻找的目录。

+0

为什么不主要使用'dir/S/B'并解析为没有分隔符的文件夹为'%%〜dpa',name.ext为'%%〜nxa'? – LotPings

相关问题