我想运行批处理文件,将所有相关文件夹和子文件夹从远程计算机复制到我的客户端计算机。 我正在使用以下 XCOPY 命令:
xcopy "\\Server_Name\C$\folder_X\folder_Y" "C:\Users\\folder_Z" /I /S /Y /D:%mydate%
运行批处理文件时得到“无效的驱动器规范”。
(也许相关:当尝试通过 Windows“运行”手动连接时,输入 \Server_Name\C$\
,我提示输入用户名和密码,然后我就可以进入相关文件夹)。
谢谢
首先尝试在本地安装远程驱动器:
net use x: \\Server_Name\C$
然后尝试从
X:
复制文件:
xcopy x:\folder_X\folder_Y c:\Users\folder_Z ...
卸载:
net use x: /delete
使用 net use U: "\server old" 将显示是否存在身份验证问题:
在这种情况下,它将返回“密码对于 \server old 无效。”
输入“服务器”的用户名: {输入您的[网络]帐户名称}
输入服务器密码: {输入您的密码}
命令成功完成。
身份验证成功后,U: 映射到 \server old 并且 xcopy 命令应该可以工作!
当然您可以映射驱动器,但其
SMB
连接无法及时响应,无法使 XCOPY
正常工作。我发现简单地 Waking
SMB
与目标路径上的 Get-ChildItem
连接就可以解决问题,特别是在循环多个目标服务器以在重大更改之前复制文件时。
$WakeSMB = Get-ChildItem "\\\TargetPath";
$Exp = "XCOPY /S /E /V /I /K /O /Y ""D:\SourcePath\*.*"" ""\\\TargetPath""";
Invoke-Expression $Exp
如果
Get-ChildItem
不起作用,可能有其他端口 445/TCP
限制影响 SM
B 连接,即 Port 445
在某些远程防火墙上被阻止,或者连接/会话超时(默认 60 秒)。
我今天遇到了这个问题。我按照上面的建议成功地将 q: 映射到远程驱动器 - 我可以 CD 到它 - 但当我运行脚本时,我仍然收到“无效的驱动器规范”消息。
问题出在目的地端。我的脚本尝试使用本地服务器上的 D: 驱动器而不是 E: 驱动器。当我在命令提示符下尝试 D: 并收到“设备未就绪”消息时,线索出现了。
我将脚本更改为按预期复制到 E:,现在可以 xcopy(无需考虑映射)并且没有问题。好吧,除了我的数据库恢复命令不起作用...我们再来一次...
试试这个 xcopy \serve