映射网络驱动器,而不在批处理文件中硬编码盘符 [英] Mapping a network drive without hardcoding a drive letter in a batch file

查看:349
本文介绍了映射网络驱动器,而不在批处理文件中硬编码盘符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要映射一个批处理文件,网络驱动器,但不希望指定驱动器号。

批处理文件被用作部署过程的一部分;我把从 CruiseControl.Net 的批处理文件,批处理文件需要映射需要证书来验证UNC路径。然后,该批处理文件调用 ROBOCOPY 部署从输出目录到目的地的网站(和排除一些文件和文件夹)。最后批处理删除网络驱动器。

问题是,这是不可扩展的,当只有几个项目,它的罚款,但现在我们已经使用这种方法得到了20个项目,并正在运行的驱动器盘符映射。我不想再使用的驱动器号,因为它们可能发生冲突 - 这将是坏

这是批处理文件的例子:

 关闭@echo
NET USE X:\\\\ 192.168.0.1 \\共享\\ wwwroot的\\ MyProject的/用户:MYDOMAIN \\ myuser的MyP455w0rd
robocopy.exeW:\\ wwwroot的\\ MyProject的X:\\ *。* / E / XO / XDApp_Data文件/搜索*的.svn/ XFsitefinity.logThumbs.db这个/ NDL / NC / NP
网络使用X:/删除

和格式化以提高可读性:

 关闭@echo
NET USE X:\\\\ 192.168.0.1 \\共享\\ wwwroot的\\ MyProject的
    /用户:MYDOMAIN \\ myuser的MyP455w0rd
robocopy.exeW:\\ wwwroot的\\ MyProject的X:\\ *。* / E / XO / XD
    App_Data文件/搜索*的.svn/ XFsitefinity.logThumbs.db这个/ NDL / NC / NP
网络使用X:/删除


解决方案

如果你没有同时放多个连接网络共享,可以使净使用* 分配免费为您的驱动器盘符。之后您可以使用的Robocopy 通过其UNC路径访问该共享和发布任何连接的份额净使用* /删除

事情是这样的:

 关闭@echo
NET USE * \\\\ 192.168.0.1 \\共享\\ wwwroot的\\ MyProject的/用户:MYDOMAIN \\ myuser的MyP455w0rd
robocopy.exeW:\\ wwwroot的\\ MyProject的\\\\ 192.168.0.1 \\共享\\ wwwroot的\\ MyProject的*。* / E / XO / XDApp_Data文件/搜索*的.svn/ XFsitefinity.log Thumbs.db这个/ NDL / NC / NP
NET USE * /删除/是的

编辑:

当我从一些研究了解到,你可以简单地映射的共享不分配驱动器号。然后它只能由其远程UNC路径映射匿名。这样,您还可以通过specifiying只有它的远程名称删除映射。

这应该工作:

 关闭@echo
NET USE \\\\ 192.168.0.1 \\共享\\ wwwroot的\\ MyProject的/用户:MYDOMAIN \\ myuser的MyP455w0rd
robocopy.exeW:\\ wwwroot的\\ MyProject的\\\\ 192.168.0.1 \\共享\\ wwwroot的\\ MyProject的*。* / E / XO / XDApp_Data文件/搜索*的.svn/ XFsitefinity.log Thumbs.db这个/ NDL / NC / NP
NET USE \\\\ 192.168.0.1 \\共享\\ wwwroot的\\ MyProject的/删除

I need to map a network drive with a batch file, but don't want to specify the drive letter.

The batch file is used as part of a deployment process; I call the batch file from CruiseControl.Net, the batch file needs to map a UNC path which requires credentials to authenticate. Then the batch file calls RoboCopy to deploy the website from the output directory to the destination (and excludes some files and folders). Finally the batch deletes the network drive.

The problem is that this isn't scalable, it's fine when there are only a few projects but we've now got 20 projects using this approach and are running out of drive letters to map. I don't want to re-use drive letters as they could collide - which would be bad.

This is an example of the batch file:

@echo off
net use x: \\192.168.0.1\Share\wwwroot\MyProject /user:mydomain\myuser MyP455w0rd
robocopy.exe "W:\wwwroot\MyProject" x:\ *.* /E /XO /XD "App_Data/Search" "*.svn" /XF "sitefinity.log" "Thumbs.db" /NDL /NC /NP
net use x: /delete

and formatted for readability:

@echo off
net use x: \\192.168.0.1\Share\wwwroot\MyProject 
    /user:mydomain\myuser MyP455w0rd
robocopy.exe "W:\wwwroot\MyProject" x:\ *.* /E /XO /XD 
    "App_Data/Search" "*.svn" /XF "sitefinity.log" "Thumbs.db" /NDL /NC /NP
net use x: /delete

解决方案

If you don't have multiple network shares connected simultaniously, you can make net use * assign a free drive letter for you. Afterwards you can use robocopy to access the share via its UNC path and release any connected share with net use * /delete.

Something like this:

@echo off
net use * \\192.168.0.1\Share\wwwroot\MyProject /user:mydomain\myuser MyP455w0rd
robocopy.exe "W:\wwwroot\MyProject" "\\192.168.0.1\Share\wwwroot\MyProject" *.* /E /XO /XD "App_Data/Search" "*.svn" /XF "sitefinity.log" "Thumbs.db" /NDL /NC /NP
net use * /delete /yes

EDIT:

As I learned from some researches, you can simply map the share without assigning a drive letter. It is then mapped anonymously, only by its remote UNC path. This way you can also remove the mapping by specifiying only its remote name.

This should work:

@echo off
net use \\192.168.0.1\Share\wwwroot\MyProject /user:mydomain\myuser MyP455w0rd
robocopy.exe "W:\wwwroot\MyProject" "\\192.168.0.1\Share\wwwroot\MyProject" *.* /E /XO /XD "App_Data/Search" "*.svn" /XF "sitefinity.log" "Thumbs.db" /NDL /NC /NP
net use \\192.168.0.1\Share\wwwroot\MyProject /delete

这篇关于映射网络驱动器,而不在批处理文件中硬编码盘符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆