首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >批处理脚本-等待网络建立

批处理脚本-等待网络建立
EN

Stack Overflow用户
提问于 2014-10-04 03:25:44
回答 3查看 13.8K关注 0票数 2

我有一个logon.bat脚本,每次用户登录到他们的Active Directory域工作站时都会运行该脚本。

此脚本使用如下命令映射一些网络驱动器:

代码语言:javascript
复制
net use x: \\192.168.0.2\share1
net use y: \\192.168.0.3\share2
net use z: \\192.168.0.4\share3

但是,对于某些工作站,此脚本在工作站本身完全建立自己的LAN连接之前运行。然后,用户转到开始菜单>计算机,看到每个映射驱动器的红色X。此时,网络已经建立,所以如果他们点击红色的X,它就会消失。不过,我仍然希望logon.bat脚本在运行net-use命令之前验证网络是否已建立。

我见过一些解决方案,这些解决方案需要更改组策略上的设置,或者需要更改罪魁祸首工作站上的设置。但是,我感兴趣的是一种解决方案,它只在我当前的批处理脚本中解决这个问题(不需要脚本之外的任何额外的脚本依赖项)。

我见过其他脚本解决方案,它们只是在批处理脚本中设置一个超时(或休眠),以便它在运行net use命令之前等待任意时间。这些解决方案提供的等待常量要么“映射驱动器的时间比它们可能映射的时间晚了一点”,要么“在网络建立之前仍有运行net-use命令的风险”。

相反,我想要一个脚本,它可以每秒检查一次网络是否已经建立,然后(在成功后)继续运行前面提到的"net use“命令。

如何在Windows批处理脚本中实现这一点?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-07-01 21:43:12

简单的检查。持续一段时间后不会自动退出。为我需要的东西工作。

代码语言:javascript
复制
:CHECKFOLDER
TIMEOUT 1
IF NOT EXIST C:\TEST GOTO CHECKFOLDER
票数 6
EN

Stack Overflow用户

发布于 2014-10-05 03:46:56

我在How to ping a server only once from within a batch file?Deleting Desktop Shortcuts Associated With Network Drives?上的回答包含了这项任务的有用信息。

以下是1台服务器的模板批处理脚本:

代码语言:javascript
复制
@echo off
set "Server=192.168.0.2"
set "RetryCount=0"

:CheckServer
rem Ping server only once with a time limit of 1000 ms.
%SystemRoot%\System32\ping.exe -n 1 -w 1000 %Server% >nul
if not errorlevel 1 goto MapDrive

rem Connection to server is not yet established. Give up after 30 seconds
rem in case of not being in right LAN or no network connection at all or
rem this server is currently not running.
set /A RetryCount+=1
if not %RetryCount%==30 goto CheckServer

echo There is no connection to server %Server%.
echo The network drive X: is not available.
goto :EOF

:MapDrive
echo Mapping network drive X: ...
%SystemRoot%\System32\net.exe use X: \\%Server%\share1 /persistent:no >nul

我必须补充的是,如果在服务器上运行阻止对服务器的ping的防火墙,则此解决方案不起作用,因此工作站无法从其服务器ping得到任何答案。

票数 5
EN

Stack Overflow用户

发布于 2014-10-08 19:42:15

您应该使用组策略首选项来映射网络驱动器,而不是批处理脚本,但是,如果您坚持这样做,在脚本中pinging服务器不是正确的方法。

相反,您应该部署组策略设置:

代码语言:javascript
复制
"Computer Configuration" -> "Administrative Templates" -> "System" -> "Logon" -> "Always wait for the network at computer startup and logon"

这将强制计算机在运行启动/登录脚本之前等待网络启动。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26185482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档