使用批处理从网络驱动器复制到C:或D:驱动器

时间:2014-05-15 14:21:49

标签: batch-file scripting cmd copy

我在执行批处理文件时遇到问题,该文件会将文件从映射的网络驱动器复制到本地驱动器。

以下是我使用的批处理代码(目前它只是在一个低级文件夹中,因为我不想在生产环境中执行命令,直到我完成所有操作)。

echo off
cls

echo Would you like to do a backup?

pause

copy "\\My_Servers_IP\Shared Drive\FolderName\*" C:TEST_BACKUP_FOLDER

pause

我也尝试过:

echo off
cls

echo Would you like to do a backup?
pause

copy "\\My_Servers_Name\Shared Drive\FolderName\*" C:TEST_BACKUP_FOLDER

pause

当我请求它时,上述任何一个命令都不会将文件复制到C:TEST_BACKUP_FOLDER,但是如果我使用相同的语法,但是从本地驱动器发出复制请求,那么这个语法就没问题了直接进入上面的文件夹没有问题。

最奇怪的部分是cmd输出甚至显示我想要复制的文件甚至在命令行中被识别,最后它显示“1个文件被复制”但没有任何副本复制到该文件夹​​。所以我知道我的复制请求目的地是正确的,因为它甚至可以识别文件夹中的文件和名称。正如我所说,C:中的目的地也是正确的,因为当我在本地PC上使用该地址时,他们每次都会复制到该文件夹​​。这显然与网络驱动器有关。起初我认为这可能是一个权限问题,但我现在正在尝试的文件夹是一个共享映射驱动器,公司中的任何人都可以访问并拥有r / w特权。为什么公共共享驱动器会出现此类问题?

你能提供进一步的建议吗?

4 个答案:

答案 0 :(得分:7)

您正在将所有文件复制到名为TEST_BACKUP_FOLDER

的单个文件中

试试这个:

md TEST_BACKUP_FOLDER
copy "\\My_Servers_IP\Shared Drive\FolderName\*" TEST_BACKUP_FOLDER

答案 1 :(得分:2)

只需进行以下更改

echo off
cls

echo Would you like to do a backup?

pause

copy "\\My_Servers_IP\Shared Drive\FolderName\*" C:\TEST_BACKUP_FOLDER

pause

答案 2 :(得分:1)

这可能是由于安全检查造成的。 This thread可能会对您有所帮助。

有两个建议:一个是pushd,另一个是注册表更改。我建议使用第一个......

答案 3 :(得分:0)

最重要的是你需要安装驱动器

net use z: \\yourserver\sharename

当然,您需要确保运行批处理文件的帐户具有访问共享的权限。如果您使用计划任务执行此操作,则可以通过选择任务来选择帐户,然后:

  • 右键单击“属性”
  • 点击“常规”标签
  • 下更改帐户

“运行任务时,请使用以下用户帐户:” 这是在Windows 7上,在不同版本的Windows上可能略有不同。

然后使用以下更改运行批处理脚本

copy "z:\FolderName" "C:\TEST_BACKUP_FOLDER"