繁体   English   中英

使用 Windows 批处理文件检查并获取服务器访问权限

[英]Check and obtain Server access using Windows Batch File

首先,我是批处理脚本和网络的完整新手,话虽如此,这就是我想要完成的事情。 我想检查服务器是否提供了执行 pc 的批处理文件来访问它,如果没有创建对它的访问。 (许多不同的电脑运行这个批处理文件)这是我现在在我的批处理文件中想出的。

net use * \\ip\My_WebApp /Persistent:yes /user:Username Password
Exit 

此批处理文件命令可以很好地创建对服务器的访问权限,但每次执行此文件时都会创建一个新的访问连接。 这不是必需的,并且可能会使服务器负载崩溃。

如何检查服务器是否已经提供了访问权限,如果没有,请在批处理文件中执行上述命令。 我的逻辑就像......

boolean status = check_server_accessibility()
if(!status){
   net use * \\ip\My_WebApp /Persistent:yes /user:Username Password
}
Exit 

感谢您的帮助,非常感谢您的宝贵时间。

您应该只需要执行一次任务,这表明不需要脚本解决方案, (持久意味着!) 我认为以下可能就足够了:

@Set "MyMap=\\ip\My_WebApp"
@%__AppDir__%wbem\WMIC.exe LogicalDisk Where "DriveType='4'" Get ProviderPath 2>NUL | %__AppDir__%findstr.exe /R /I "%MyMap:\=\\%\>" 1>NUL && GoTo :EOF
@%__AppDir__%net.exe Use * "%MyMap%" /Persistent:Yes /User:Username Password

或者,如果您需要知道当前分配给它的驱动器号,则使用检索数据:

@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion

Call :MapChk "\\ip\My_WebApp"

GoTo :EOF

:MapChk
Set "MyMap=%~1"
Set "MyDrv="
For /F "Skip=1 Delims=:" %%G In (
    '%__AppDir__%wbem\WMIC.exe LogicalDisk Where "DriveType='4' And ProviderPath='%MyMap:\=\\%'" Get DeviceID 2^>NUL'
) Do For %%H In (%%G) Do Set "MyDrv=%%G:"
If Defined MyDrv (
    Echo %MyMap% is already mapped to drive %MyDrv%.
    %__AppDir__%timeout.exe /T 5 /NoBreak >NUL
    GoTo :EOF
)
%__AppDir__%net.exe Use * "%MyMap%" /Persistent:Yes /User:Username Password

我已经把它变成了一个可call的 label,这样你就可以更容易地为其他映射扩展它,例如在GoTo:EOF之前, (第6行)Call:MapChk "\\Server\My Share"

注意:这些解决方案未经测试,我不使用 PC,也没有映射的网络位置来测试它们。 如果我在某个地方犯了错误,请告诉我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM