与这个问题大致相关网络共享导致 Cygwin 在“ls”之后运行缓慢,我想编写一个小批处理文件,执行它来断开主机与任何网络共享的连接,然后执行另一个批处理文件来重新连接。理想情况下,这是我可以从 PuTTY 终端执行的,通过 SSH 连接到运行 cygwin 的框。
我很确定批处理文件很容易编写,但我不知道如何从 PuTTY 终端执行它们。无论如何,我仍然喜欢批处理文件。
为了简单起见,我的流程如下:
- 通过PuTTY登录服务器
- 运行批处理文件以断开共享
- 做我需要做的事
- 运行批处理文件以重新连接共享
- 退出会话,关闭 PuTTY
答案1
请注意,以下命令需要使用本地管理员组中的帐户运行,最好是使用可以访问被映射共享的帐户运行。
基本命令
断开驱动器:
net use /d * /y
分解:
net use
是从命令行更改网络驱动器映射的实用程序。/d
代表“删除”,断开命令参数中指定的任何驱动器映射。*
是通配符,用于运行命令全部当前映射的驱动器。/y
表示“是”,绕过命令的交互式确认。
要重新连接驱动器:
net use [driveletter]: "\\[servername]\[sharename]\[subfolder-path]" /p:y
(对每个映射重复此操作。)
分解:
net use
- (往上看)[driveletter]:
- 将其替换为您想要使用的任何驱动器号。删除括号,保留冒号。如果您不需要将共享与驱动器号关联,则可以将其完全删除。"\\[servername]\
- 将其替换为托管共享的计算机的名称或 IP。删除括号。保留反斜杠。如果路径不包含空格,则引号是可选的。[sharename]
- 将其替换为您访问的共享的名称。删除括号。\[subfolder-path]
-(可选)将其替换为您希望映射指向的任何子文件夹的剩余路径。如果您只希望映射指向共享的根目录,请将其省略。删除括号。在适当的地方使用反斜杠。"
- 如果您保留了开头的引语,请保留结尾的引语。否则,请删除。/p:y
- 这是“Persistent:YES”,意味着驱动器映射将在重新启动后保留。
带注释的批处理文件示例
REM The first line below keeps the batch commands from "echoing" on the command line. Only command output is displayed. Delete or comment out that line for debugging.
@echo off
REM The next command deletes all drive mappings.
net use /d * /y
REM The next two lines print a message stating what the previous line should have done (check command output to verify) and what the user should do next.
echo Drive mappings DELETED!
echo Press any key to restore drive mappings.
REM The next line pauses the batch job, pending user input. Leave the batch window open, and go on to do your work. Return to the batch window and press any key to continue.
PAUSE
REM The next command is an example of connecting to a share path that does not include subfolders or spaces, and will not be mapped to a drive letter.
net use \\myserver\logs
REM This next command is an example of mapping a drive letter to a path that includes a subfolder, but no spaces.
net use R: \\myserver\myapp\reports /p:y
REM This next command is an example of mapping a drive letter to a path that does include sub-folders and spaces. Note the requisite quotation marks.
net use P: "\\myserver\c$\Program Files\My Application\"
REM The next two lines print messages similar to the previous two "echo" commands, this time informing the user that the drives should be re-mapped.
echo Drive mappings RESTORED!
echo Press any key to exit.
REM This last line inserts a final pause in the batch job. Use this opportunity to check the command output and verify that the previous commands completed succesfully.
PAUSE
REM The batch window should automatically exit after this, or return to the command prompt if the file was run from within an existing console.
请注意,如果需要,可以很容易地将其拆分为两个单独的批处理文件,分隔符放在第一个之后PAUSE
。我强烈建议PAUSE
即使拆分命令,也要将命令保留在批处理文件的末尾,以便您可以在退出之前确认批处理命令是否成功。
以其他用户身份映射
如果您无法net use
以具有共享访问权限的用户身份运行该命令,则每次映射都需要附加参数和一些进一步的用户交互。
删除驱动器映射不需要额外的参数。
要以不同的用户身份重新连接驱动器,请向每个命令添加以下参数:
/user:[domain\username]
或者
/user:[username@domain]
例子:
net use R: \\myserver\reports /user:mydomain\me /p:y
或者
net use P: "\\myserver\c$\Program Files\My Application" /user:mysubdomain.mydomain.tld\me /p:y
或者
net use \\myserver\logs /user:[email protected] /p:y
对于每个映射,系统都会提示您输入密码。我相信还有一个可用的附加参数,允许您在命令中包含密码。但是,由于批处理文件以明文形式存储,我强烈建议不要使用它。
答案2
试试这个 - 不知道它将如何在 Cygwin 中工作...但这是 BATCH,如果在 Windows 上正常执行,它应该可以工作。
REM Delete all existing connections
NET USE * /DELETE /Y
REM Map connections to the X, Y, Z letters for the shares
NET USE X: \\SERVER1\SHARE1
NET USE Y: \\SERVER1\SHARE2
NET USE Z: \\SERVER2\SHARE1