Batch file 将驱动器映射到未知共享名?

Batch file 将驱动器映射到未知共享名?,batch-file,Batch File,我正在尝试创建一个批处理文件,该文件可以查看网络共享的内容,找到特定的命名目录和子目录,然后将驱动器映射到包含这些内容的共享。问题是,虽然共享内容中包含这些文件夹,以确定这是正确的共享,但在不同的设置中,共享名称本身可能不同,因此我不能在脚本中仅使用共享名称 换句话说 \\服务器\共享\模拟人生\设置 sims和setups目录将始终存在于共享中,但共享名称可能有所不同。服务器名称将已存在于批处理文件中,因为它是使用set/p命令设置的,以提示用户输入服务器ip 我已经看过find和forfil

我正在尝试创建一个批处理文件,该文件可以查看网络共享的内容,找到特定的命名目录和子目录,然后将驱动器映射到包含这些内容的共享。问题是,虽然共享内容中包含这些文件夹,以确定这是正确的共享,但在不同的设置中,共享名称本身可能不同,因此我不能在脚本中仅使用共享名称

换句话说

\\服务器\共享\模拟人生\设置

sims和setups目录将始终存在于共享中,但共享名称可能有所不同。服务器名称将已存在于批处理文件中,因为它是使用set/p命令设置的,以提示用户输入服务器ip

我已经看过find和forfiles命令,但它们似乎只适用于本地搜索,而不适用于网络路径

谢谢

如所示,您可以使用
net view
命令列出服务器的共享

for命令能够迭代命令的输出。如果存在某个文件夹/文件,在下面粗略的命令行中结合这些命令行确实可以为我映射驱动器

for /F %a in ('net view \\srv') do if exist "\\srv\%a\sims\setup" net use z: \\srv\%a
(如果在命令脚本中使用此行,请不要忘记将%a更改为%%a)

网络视图确实输出了一些噪声,但这并不会影响结果。您可以添加一些额外的处理,以便仅在收到“----”行后处理共享

这是怎么回事?
net view\\server
输出以下内容:

Shared resources at \\server

Awesome server

Share name     Type  Used as  Comment

-----------------------------------------------------------------------------
Configuration  Disk           System Configuration
Download       Disk           Download Share (Full Access)
Public         Disk           Public Share (Full Access)
Blah           Disk           Blah share (Full Access)
The command completed successfully.
for/f
命令将每行解析到下一个空格。从<代码>中获取/?

FOR /F ["options"] %variable IN (`command`) DO command [command-parameters]
…您可以使用FOR/F命令来解析 指挥部。通过将文件设置为 括号是带反引号的字符串。它将被视为一个命令 行,传递给子CMD.EXE并捕获输出 并将其解析为一个文件

如果在
net view\\server
上运行,使用该技术将回显以下结果:

Shared
Network
Share
-----------------------------------------------------------------------------
Configuration
Download
Public
Blah
The
EXIST操作符检查文件/目录是否存在。通过连接servername、share和期望的文件夹,您可以发现该文件夹是否存在于该共享上


正如我所说的,前4行和最后一行是噪声,应该忽略,但在这种情况下它们不会造成太大的伤害。

使用
net view\\server
看看它显示了什么。谢谢@foxidrive。这部分我已经记下来了,我只是不确定如何使用这个命令的输出来获得我所需要的。看来我现在有了一个完美的解决方案。再次感谢。谢谢你@KennyBot,这真是妙不可言!这正是我的目标。非常感谢!刚试过。我确信它会以某种方式使用for命令和net视图,但就是不知道如何应用它。再次感谢。该命令需要在批处理文件中使用元变量的
中使用百分号。