batch file中'rasdial'之后的'net use'错误

我正在写一个批处理脚本,执行以下操作:

  1. rasdial – 连接VPN
  2. networking使用 – 将驱动器映射到远程文件夹共享(在VPN上)
  3. xcopy – 将一堆文件从映射驱动器复制到本地机器
  4. 净使用 – 取消映射驱动器
  5. rasdial – 断开VPN

但是,它永远无法映射驱动器。 它说:

发生系统错误67。

networking名称找不到。

如果我从命令行手动运行相同的命令序列,一切运行良好。 任何想法会导致它不能看到新创build的networking?

我的第一个虽然是安全的,但我尽我所能想尽一切办法。

出于好奇,如果抛出“rasdial”和“net use”之间的延迟 – 比如说“ping -n30 127.0.0.1”抛出29秒暂停,会发生什么? 我注意到RAS客户端,至less在Windows XP中,在连接出现几秒钟后,路由表将会播放。

我不知道任何描述RAS客户端对路由表做什么的文档。 当我从Windows XP客户端连接到远程networking上的“使用默认网关”选项时,RRAS服务器取消选中我看到folling行为:

  • 到远程networking的“有类”路由被添加到路由表中
  • 在大约3 – 5秒内,路由被删除,并且具有与RRAS服务器相同的子网掩码的路由被添加到路由表中的位置

当选中“在远程networking上使用默认网关”选项时,我看到以下行为:

  • 到远程networking的默认网关路由被添加到路由表中
  • 在大约3 – 5秒内,与RRAS服务器具有相同子网掩码的路由被添加到路由表中(并保留默认网关路由)

假设您使用连接pipe理器pipe理工具包,您可以创build执行脚本和/或具有自定义路由表条目的RRAS客户端条目。 虽然我从来没有得到这个function的工作。

在RASDIAL完成之后(route print> tilltxt),在暂停(route print> after.txt)之后,立即拍一张路由表的快照,找出哪些行改变了(之后的fc.txt)。 txt)并在脚本中添加一点循环来打印路由表,查找表示“after”条件发生的行,如果没有,则暂停一秒钟并循环。

这是肮脏和黑客,但它应该工作。

顺便说一句:在Windows 7中的行为是不同的。您可以select“禁用有类别的路由添加”。

RRAS服务器的同时代理ARP性质对我来说总是有点让人失望。 我更喜欢客户端在自己的子网中的VPN,VPN服务器将stream量路由到他们。 不过,我想我可以理解为什么微软以他们的方式来实现它。 在他们的模型中,RRAS客户端最终会像局域网那样出现在同一条线上,而RRAS服务器提供的代理ARP“神奇”使得系统pipe理员可以自由地畅通无阻地思考IP路由。