问题标签 [robocopy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4599 浏览

powershell - Powershell robocopy /mir 在 /mir 删除之前复制文件

我编写了一个执行以下步骤的 Powershell 脚本。

  1. 它 RoboCopies 文件从服务器到外部硬盘驱动器(增量备份)
  2. 下次它应该检查服务器上是否有任何文件被删除,如果是,则将这些文件从备份文件夹移动到备份硬盘驱动器中名为 _DeletedFiles 的文件夹。
  3. 使用 /MIR 的 RoboCopy(这将删除服务器上已删除的文件以及备份中的文件,这没关系,因为我已经将它们保存在 _DeletedFiles 文件夹中)

这个 _DeletedFiles 文件夹的要点是,即使有人删除了文件,我们也希望将其保留至少 60 天。

现在这个脚本有点复杂,包括写入日志文件、测试路径和首次运行 if 语句等。

除了我想将服务器上删除的文件从备份复制到新文件夹的步骤之外,一切似乎都有效。

此步骤类似于以下内容:

我得到的错误是文件无法复制,因为它们在目的地不存在;但是,它会尝试复制一开始就不应该复制的文件。

我想知道是否有人想更优雅地解决这个问题,或者如何修复我的代码片段。

0 投票
1 回答
980 浏览

powershell - 比较 Powershell 中的两个目录并使用不比较

我尝试比较 2 个文件夹。BA的备份文件夹。首先,我想检查文件夹A中是否有任何文件已被删除,如果是,我想从B中取出相应的文件并移动它。然后我可以继续 RoboCopy /mir A再次创建备份。

我的问题是如何比较两个目录(A 和 B 有子文件夹等),然后移动已删除的文件。这是应该执行此任务的代码。

更新 1

我一直在编写代码并发现问题似乎在这里:

它总是会返回 false,因为我猜它并没有真正按照我的意图去做。它应该遍历B文件夹中的每个 File 并检查该 File 是否存在于A中。

回答

我能够用 latkins 的回答完成脚本。作为参考,这里是完整的脚本。

0 投票
1 回答
4161 浏览

date - Robocopy 上次修改:比一天更准确?

我正在处理一个 Windows 批处理文件来执行与服务器的双向同步。多人将使用该批处理文件将多台计算机与一个网络位置同步。由于限制我不会进入,它必须是一个批处理文件。没有 vbscript,没有 javascript,只有 windows 批处理。Powershell 命令可能没问题,只要我可以从批处理文件中运行它们。

为了允许删除文件,它会多次运行 robocopy。首先,它使用 /MAXLAD 开关复制比上次运行脚本时更新的文件。它在两个方向上都这样做。然后,它使用 /l 开关进行镜像并检查退出代码以检测额外文件。如果任何一方有额外的文件,它会在适当的方向上真正运行镜像。

该脚本按原样运行良好,但是...

问题是,/MAXLAD 接受格式为 YYYYMMDD 的日期,因此,如果您在本地创建文件,运行同步脚本,然后立即删除文件并再次同步,它就从坟墓里回来了。为了成功删除一个文件,它需要在您最后一次运行脚本之前至少一天未修改。我想要一些方法来消除这个限制,所以它可以按照我的用户喜欢的频率运行并按预期工作。

我的问题是:有什么方法可以使最后访问时间更精确吗?即使我可以将它缩小到一个小时,这将是一个改进。除了 robocopy 之外,我还应该做其他事情来复制新文件吗?

0 投票
1 回答
1348 浏览

vbscript - WScript.Shell.run 启动 robocopy 不显示目标参数

我正在尝试使用 vbscript (cscript/vbs) 将文件从一个网络位置(我的电视节目下载文件夹)复制到另一个网络位置(我的 pvr)。

我尝试使用 xcopy 但最终在没有任何上下文的情况下出现“解析错误”。尝试了一些方法,例如确保引用有空格的文件等无法解决。

我尝试使用 scripting.filesystemobject 的 copyfile 方法,但是由于“错误的文件名或编号”错误而失败,并且在谷歌上搜索这个导致了很多很多死胡同。

我目前正在尝试让 robocopy 来处理副本,因为它通常比上述两者都好。但是当使用 WScript.Shell 的 Run 方法从 cscript 中运行时,目标、文件名和参数都“脱落”。

所以这里是复制部分的一个片段。

fileFrom 和 fileTo 是我之前使用文件名解析计算的目录 - 格式为\\server\path\more path might have spaces\etc\etc. fil.name 是文件,它从不包含空格 - 以点分隔。文件夹名称中的空格是我使用的另一个应用程序中匹配原因的要求。

所以一个给定的文件复制命令应该是这样的:

00:19: %comspec% /k robocopy \\qnap\qdownload\transmission\completed \\pvr\e\tv\MythBusters Mythbusters.S11E03.Hail.Hijinx.HDTV.x264-FQM.mp4 /R:3 /W:10

但是新命令窗口(例如cmd.exe /k)中的 robocopy 会像这样抛出:

我正确启动了它,但它看不到第一个参数。使用 copy 执行相同的命令可能会遇到相同的问题。

如何获取所有 robocopy 参数以传递给新的 cmd 实例?

ps 我的整个脚本在这里:http ://pastebin.com/xgpGJYmU :随意优化它!

0 投票
1 回答
192 浏览

windows - Powershell 或其他 Windows 方法将带日期戳的 html 文件复制到网络共享

我是 powershell 的新手 - 如此严重的菜鸟。

但我想看看是否有人可以帮助做以下事情。

我们在服务器上有一个文件夹,每晚都向其写入报告。报告按以下格式命名: DiskSpaceReport_26102012.html 和位置C:\Powershell\WebReport\

我想要一个 PS 脚本使用从脚本运行之日起 -8 天的日期范围从文件夹中复制这 1 个文件 - 该脚本将作为 Windows 计划任务的一部分或通过 SQL 代理作业运行。

所以目前该文件夹中有 8 个文件的日期Friday 26 OctFriday 19th Oct. 我希望该过程今天运行并从今天开始复制文件 -8 天。所以复制名为DiskSpaceReport_19102012.html

这个过程应该在星期五每周重复一次,并复制 8 天前的最后一个文件。复制到网络共享

\\Server01\Powershell\Webreports_Archive

正如我在标题中提到的,我不介意这是否更容易通过批处理文件中的 robocopy 来完成。虽然更喜欢通过PS。

0 投票
1 回答
1710 浏览

powershell - Get-Childitem 解决方法

我想确定哪些文件/文件类型在文件服务器上占用的空间最多。由于许多用户创建的文件名称/路径长度超过 260 char gci 不起作用。(shortcuts-in-shortcuts-in-shortcuts-infinity)

我的下一步是通过使用显示的东西来创建解决方法,大小文件名和路径没有 max_path var 限制。(ROBOCOPY)

这是我的功能:

}

这种方法有效,但我的问题是它消耗大量资源。

有人知道如何改进此功能....也许是另一种解决方法的想法?

0 投票
1 回答
2943 浏览

batch-file - 如何通过批处理文件检查是否存在 robocopy

我想通过我的批处理文件确保我在系统上安装了 robocopy。是否可以询问诸如如果 robocopy.. 知道它是否安装在我在它上面的系统中。

0 投票
5 回答
15960 浏览

python - 如何在 python 脚本中调用 robocopy 来批量复制多个文件夹?

我正在尝试在网络驱动器之间移动多个大文件夹(> 10 Gb、> 100 个子文件夹、> 2000 个文件)。我曾尝试在 python 中使用 shutil.copytree 命令,该命令工作正常,但由于不同原因它无法复制一小部分(< 1 % of files )。

我相信 robocopy 对我来说是最好的选择,因为我可以创建一个记录传输过程的日志文件。但是,由于我需要复制 > 1000 个文件夹,因此手动工作是不可能的。

所以我的问题本质上是如何从python脚本中调用robocopy(即命令行),确保日志文件写入外部文件。

我在 Windows 7 环境中工作,由于组织限制,Linux/Unix 是不可能的。如果有人有任何其他建议可以灵活地批量复制这么多文件夹,欢迎他们。

0 投票
2 回答
2571 浏览

variables - PowerShell、Robocopy 和 SchTasks --> 为命令发送变量和文本

我的 Powershell 备份脚本有点问题。我使用带有 Robocopy 的任务计划程序来部署我的备份。

这是一个命令示例:

问题是,当我运行我的脚本时,任务会出现,但它使用相同的文本和相同的变量

例如,此脚本将使用以下命令运行任务:

使备份无法正常运行。

它应该像这样保存在任务中:

有一个选项,我可以将命令保存在 .bat 文件中并执行它,但这不应该是解决方案。

如果有人可以帮助我,那就太棒了!:D

最好的祝福

卢巴斯

0 投票
1 回答
1056 浏览

clearcase-ucm - 从动态视图复制时出现 Robocopy 错误

在过去的几个月里,我有一个问题一直困扰着我。我使用 UCM Clearcase 的动态视图将最新的源代码复制到本地磁盘。然后我编译源代码并生成 Installshield 包等。我使用 Robobopy 来复制文件。

Robocopy 无法复制并挂起。这种情况每周发生 2-3 次。因此,它已成为 Nightly Build 工作流程的噩梦。幸运的是,昨天,我看到 Robocopy 显示了一个错误。它是这样的:

ERROR 64: 指定的网络名称不再存在

我谷歌了一下,发现这可能是由于:

1) 防病毒

2)网络硬件配置不当

另一件重要的事情是,在与 Clearcase 或其他软件相关的任何其他操作期间,我没有看到任何网络问题。

在 VonC 的建议下,我一直在推动使用快照视图进行编译的想法,但管理层似乎不太情愿,因为:

1) 其他团队也有相同的设置,他们从动态视图复制

2) 他们面临不到 5% 的复制失败

3) 根据其他团队的说法,从动态视图复制似乎是最佳实践,我被要求遵循它。

我想知道是否有人遇到过这样的问题。

我想要一些可以帮助我说服管理层转向快照视图进行编译的要点。

任何帮助,将不胜感激。