【问题标题】:When moving files XCopy can put them into a file移动文件时,XCopy 可以将它们放入文件中
【发布时间】:2015-06-04 05:46:49
【问题描述】:

我正在为我的 USB 制作一个备份脚本并偶然发现了这个。

xcopy "E:\" "D:\backup" /s/h/e/k/f/c/y

当我执行批处理脚本时,它在我的 D:\ 驱动器中创建了一个文件(不是文件夹),称为备份。

然后我把它重命名为一个.zip文件夹并解压出来,里面是这样的。

这些文件是什么?它们的用途是什么?

我可以将我的 USB 备份到 zip 中吗??

【问题讨论】:

  • 这与您使用存档软件打开 Excel (.xlsx) 文件时所看到的非常相似。尝试使用 Excel 打开文件,看看会发生什么。
  • @Luke McGregor 在下面尝试我的答案,看看是否可行

标签: batch-file cmd backup xcopy


【解决方案1】:

您的视频揭示了您在最初问题中遗漏的关键信息:当 xcopy 询问您的目标目标是文件还是目录时,您告诉 xcopy 它是一个文件。

xcopy 然后继续将源中的每个文件写入该文件,因为这就是您告诉它要做的事情。不幸的是,xcopy 不会创建存档文件,因此不是将所有文件合并到一个容器文件中,而是一次使用每个源文件覆盖目标文件 - 这是您看到的奇怪行为的关键.

根据您的视频,xcopy 处理的最后一个文件是Action Plan.xlsx - 请注意这一点。由于这是 xcopy 处理的最后一个文件,因此 D:\backup 是该文件的副本,并且仅是该文件。

关于 Excel 文件的有趣之处在于,虽然旧的 .xls 文件是只能由 Excel 打开的专有 Microsoft 文件,但较新的 .xlsx 文件实际上只是 XML 文件的存档。 (例如,this 是我几年前的工作日程,当你用 WinRAR 打开它时的样子——看起来很眼熟?)

因此,总而言之,您将源中的每个文件都复制到了同一个目标文件中,而您复制的最后一个文件恰好是一个存档文件。下次运行脚本时,选择 D 而不是 F

【讨论】:

  • 感谢您的回答让我明白了很多,我的朋友很聪明! :)
【解决方案2】:

“移动文件时,XCopy 可以将它们放入文件中”

xcopy 复制文件,它不会移动它们。


“当我执行我的批处理脚本时,它在我的 D:\称为备份的驱动器”

您还没有名为 D:\backup 的文件夹。


"xcopy "E:\" "D:\backup" /s/h/e/k/f/c/y"

让我们看看命令选项的作用。

  • /s复制文件夹和子文件夹

  • /h复制隐藏和系统文件和文件夹(默认=N)

  • /e 复制文件夹和子文件夹,包括空文件夹。 可以用来修改/T。

  • /k 复制属性。否则 XCOPY 将重置只读属性

  • /f 复制时显示完整的源文件名和目标文件名。

  • /c即使出现错误也继续复制。

  • /y 禁止提示以确认覆盖文件。

这些选项都不会使xcopy 创建单个文件而不是包含复制文件的目录树。


“然后我将其重命名为 .zip 文件夹并解压缩,”

见上文。为什么你认为该文件是一个 zipfile? xcopy 不创建 zip 文件。


“我可以将我的 USB 备份到 zip 中吗?”

是的,但不是xcopy。 windows backup 命令将在后台创建zip 文件。

更多信息请参见How To Use Backup and Restore in Windows 7

选择“让我选择选项”并选择您的 E: 驱动器。


来源xcopy

【讨论】:

  • 我问这个的原因不是因为它给出了错误的赌注,因为它看起来好像是将它们全部压缩在一起并将它们保存到一个文件中
  • “似乎将它们全部压缩在一起并将它们保存到文件中”——正如我在回答中解释的那样,这不会发生,因为`xcopy。您的问题中没有提到其他事情。
  • xcopy创建 zip 文件。
  • 上传当目标是 .zip youtube.com/watch?v=xPJeP4NLg80&feature=youtu.be时会发生什么的视频
  • “这个视频是私人的。很抱歉。”。无论如何,您说“当我执行批处理脚本时,它在我的 D:\ 驱动器中创建了一个文件(不是文件夹),称为备份。”。创建的名为 backup 的文件不是 zip 文件。
【解决方案3】:

试试下面的命令,看看是否可行,理想情况下我要做的是告诉 xcopy 复制的工件是目录/文件夹而不是文件

echo D|xcopy "E:\" "D:\backup" /s/h/e/k/f/c/y

【讨论】:

  • 那么……我告诉他的究竟是什么?
  • @SomethingDark 同意,错过了你的答案,类似于你的编码风格:)
【解决方案4】:

在命令提示符窗口xcopy /? 中运行并阅读此命令的帮助输出。

你可以在那里阅读参数/I,它告诉xcopy目标是一个目录而不是一个如果不存在就应该创建的文件。因此,您需要做的就是附加到参数列表/i/I

我建议在每个参数之间插入一个空格,因为这是常用格式,请参阅命令 xcopy 的帮助。

【讨论】:

    猜你喜欢
    • 2021-10-20
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2014-02-13
    • 2012-03-20
    • 2016-04-03
    • 1970-01-01
    相关资源
    最近更新 更多