如果通过计划任务调用 BAT 文件,则无法将文件复制到 UNC 目标
Posted
技术标签:
【中文标题】如果通过计划任务调用 BAT 文件,则无法将文件复制到 UNC 目标【英文标题】:Can't copy files to UNC Destinations if BAT file is called via scheduled task 【发布时间】:2012-04-27 21:17:42 【问题描述】:我有一个 bat 文件,将文件从当前机器复制到映射的网络驱动器(一行,xcopy 命令)。
当我 RDP 到服务器时它工作。但是,当我作为计划任务运行并将其配置为在我登录的同一用户下运行时,它不起作用并给出错误 0x4。
有什么方法可以实现吗?
我也尝试了 dsynchronize,当我单击同步时它可以工作。当我将它作为服务运行时,同样的问题。
【问题讨论】:
在下面支持了对我有帮助的那个,但这个答案也帮助我在我的情况下调试它***.com/questions/8662024/… 【参考方案1】:我能够弄清楚。以下批处理文件在调度程序下工作,即使作为本地系统帐户:
net use m: \\server\share /U:server\user password
xcopy C:\source m: /E /Y
它每次都会映射一个网络驱动器,然后复制到那个驱动器
【讨论】:
【参考方案2】:可以将文件复制到 UNC 路径而不映射为网络驱动器。 只需尝试在引号中设置 UNC 路径。
copy * "\\server\share"
没有引号,我在 Windows7 命令行上运行时遇到“语法错误”。
【讨论】:
【参考方案3】:我有类似的问题,我想将文件从服务器复制到数百个其他服务器,而不将远程驱动器映射到我的本地 PC。我没有足够的驱动器号将数百台远程计算机映射到我的本地 PC!我不能只映射远程驱动器并复制。
我认为我可以使用 copy、xcopy 或 robocopy,并将我的凭据指定给 copy 命令。但是没有一个复制命令有任何选项可以向远程系统提供凭据。
多亏了上面的帖子,我能够创建一个小批处理文件,我只是在其中循环遍历我的主机,并继续为我的所有主机重复使用一个驱动器映射。
这是我的批处理文件...
echo @off
for /F %%j in (pchostslist1.txt) do (
net use z:\\%%j\c$ /user:domain\myusername mypassword
mkdir \\%%j\c$\tmp\mynewdir
xcopy c:\anyfile.txt \\%%j\c$\tmp\mynewdir
net use z: /delete
)
【讨论】:
【参考方案4】:我遇到了类似的问题,我只需要将密码存储为计划任务的一部分,而不是使用 net use。您会注意到它表示只有勾选它才能访问本地资源。
【讨论】:
【参考方案5】:谁映射网络驱动器?您是否使用映射名称,而不是底层的 UNC 本机路径?因为听起来映射驱动器是在您的登录脚本中设置的,如果您未登录,该脚本将不会运行。因此,在计划任务中,您确实拥有 UNC 路径的正确凭据,但没有映射驱动器号.
【讨论】:
我映射网络驱动器。是的,我正在使用映射名称。即使我已登录,计划任务也会出现相同的错误 是否已登录计划任务并不重要。它使用自己的会话,并且驱动器未映射到该会话中。 @Marc:当然可以,正如 cmets 所证实的那样。症状是无法复制文件,问题是为什么。答案是 UNC 路径缺少驱动器号,因为未运行登录脚本。以上是关于如果通过计划任务调用 BAT 文件,则无法将文件复制到 UNC 目标的主要内容,如果未能解决你的问题,请参考以下文章