我能否使用脚本或命令行将文件复制到网络位置?

12

在Windows XP中,是否可以通过命令行、批处理文件或者更好的PowerShell脚本将文件复制到网络位置?

我开始研究这个问题是因为我试图从用户的计算机发布文件到WSS 3.0文档库。由于WSS站点只能通过NTLM进行身份验证并且位于80或443端口之外,我无法映射驱动器到相关的文档库。我想我可以使用WSS Web服务来推送文件,但现在我真的很想知道这个问题的答案。


请见类似问题:http://serverfault.com/q/43116/84502 - Synox
9个回答

19

通过批处理文件,您可以同时登录到资源并复制文件:

批处理文件将包含以下内容:

net use \\{dest-machine}\{destfolder} {password} /user:{username}
copy {file} \\{dest-machine}\{destfolder}
net use \\Development\myfolder mypassword /user:Administrator
copy newfile.c \\development\myfolder

6

如果您需要提到一个 Windows 电脑,只需使用 xcopy。通常情况下,xcopy 都是可用的。

xcopy src \\dest-machine\shared-library-name\dest
xcopy \\src-machine\shared-library-name\dest src

3

Powershell使用提供者的抽象来提供对数据存储的通用接口。这些似乎坚持常见名词“Item”,因此您可以使用man *item*获取完整列表。如果您知道另一种从存储中复制和处理数据的方法,那么也可以使用它,但使用cmdlet提供了更好的“一次学习,经常使用”的方法。在您的情况下,您可以:

Copy-Item test.txt -Destination \\dest-machine\share

如果您需要,Copy-item还支持-Credential参数。


1
Copy-Item有一个-Credential参数,但是标准提供程序(即文件系统)都不支持它,所以它实际上无法使用。 - chills42

2
"网络位置"并没有真正的API,它只是一堆快捷方式,而SharePoint共享使用Shell扩展,如果我没记错的话。
总之,从PowerShell以文件系统的形式访问Sharepoint也需要扩展程序,即SharePoint Provider

1
你可以使用'net'命令进行身份验证,然后复制文件。
copy src \\dest-machine\shared-library-name\dest

如果需要认证,我不是非常确定如何处理。


1

从我所看到的情况来看,似乎无法直接从命令行访问/操作网络位置,无论是在PowerShell还是普通的命令提示符中。

@slipsec (#13899): 感谢您的建议,但是PowerShell不支持目标路径中的端口号,就像net use命令一样。

因此,在我特定的情况下,我能想到的最好的办法是咬紧牙关购买像WebDrive这样的东西,以便在非标准端口上通过WebDAV启用驱动器映射,或者在SharePoint中进行一些不同的配置(例如使用不同IP地址和主机头的单独Web应用程序)以通过NTLM在标准端口上公开站点。


0
如果你需要编写脚本,你应该考虑使用NAnt
它主要用于构建脚本,但非常强大且相对容易上手。
此外,还有NAntContribnant ftp task可以帮助你。

0
我可能对此有所错误,但我认为Nick的robocopy解决方案或Nathan的复制命令解决方案都不会起作用。Robocopy似乎需要一个映射的驱动器,但我无法这样做,因为它没有在端口80或443上运行,而且Windows无法处理包含端口的路径的UNC样式名称:
copy src \\dest-machine:45000\shared-library-name\dest

我没有看到任何处理这种情况的NAnt任务。

我也知道有一些工具可以让我映射WebDAV驱动器。我更想知道是否有一些方法可以利用已经设置好的网络位置,而不使用GUI。


-1

可以的。我建议使用像robocopy这样的工具。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接