![](/img/trans.png)
[英]how to check if port 8086 is listening, using a windows batch file
[英]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
或者,如果您需要知道当前分配给它的驱动器号,则使用for 循环检索数据:
@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.