我们在自己的本地网络上拥有数百个具有唯一服务器名称的客户端,这些客户端托管一个名为“Installs”的特定文件夹。最终我正在尝试放在一起的是一个批处理,找到具有所述名称的文件夹,并使用该文件夹中的MSI文件安装在他们的机器上。服务器名称可以是任何东西,我唯一知道的是它将共享该特定文件夹。我尝试了很多网络视图,查找,dir,wmic共享的变化..没有这样的运气,没有能力搜索所有可用的网络资源。我以为我可以做一个净视图> shared.txt并以某种方式使用它在那里的名称来搜索这些机器上的“安装”。我只是感到茫然,似乎我必须开始解析,这有点高于我。有人会知道怎么做吗?
净观点评论......
Server Name Remark
-------------------------------------------------------------------------------
\\TDF-DESK2
\\FWM-LAPT
\\CAC-VCM
\\BNE-DESK
\\MAXBETA Win2008R2 Std - Beta Test Server
答案 0 :(得分:0)
这会搜索您计算机可用的每个共享,并搜索第2行中列出的foldername
。
@echo off
set "folder=foldername"
for /f %%a in ('net view ^|find "\\"') do if not "%%a"=="\\%computername%" (
echo trying server "%%a"
pushd "%%a" && (
for /d /r %%b in (%folder%*) do if /i "%%~nxb"=="%folder%" echo server "%%a" folder "%%b"
popd
)
)
pause
下面的早期答案:
在局域网上测试 - 更改foldername*
,但将*
保留在那里
它应该回显匹配的path\folders
。
这使用名为repl.bat
的帮助程序批处理文件 - 从https://www.dropbox.com/s/qidqwztmetbvklt/repl.bat
将repl.bat
放在与批处理文件相同的文件夹中或放在路径上的文件夹中。
@echo off
net share |repl "^.*(.:\\.*)" "$1" a|repl " *$" ""|repl "\\ *.*" "\"|repl "^..\\windows.*" "" i >temp.tmp
for /f "delims=" %%a in (temp.tmp) do (
for /d /r "%%a" %%b in (foldername*) do echo "%%b"
)
del temp.tmp
pause