我需要搜索远程目录(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
现在我需要相同的批处理文件来cd进入目录2a并在里面执行一个脚本。
有没有办法存储' 2a'在一个变量中,我可以进入它吗?
目前我在两个步骤中执行此操作,批处理将显示搜索结果,然后提示输入目录:
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,但是当我检查var时,它是空的。
答案 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%现在是我正在搜索的目录。