回显复制命令之前的路径

回显复制命令之前的路径

我在批处理文件中有以下内容:

ECHO ---------------- Copy to Test --------- >> "c:\Logs\Posted_%date:~-10,2%-%date:~-7,2%-%date:~-4,4%_%time:~0,2%%time:~3,2%.txt
copy "C:\myfiles\OT*" "c:\OT Test\" >> "C:\Logs\Posted_%date:~-10,2%-%date:~-7,2%-%date:~-4,4%_%time:~0,2%%time:~3,2%.txt

这将生成一个文本文件,其中显示以下内容:

C:\Myfiles\OT for Dec17.xlsx
        1 file(s) copied.

我不仅想显示复制了什么文件,还想显示目标名称。如下所示:

C:\Myfiles\OT for Dec17.xlsx to c:\OT Test\

为了实现这一点,我需要在批处理文件中添加什么?

答案1

该命令copy没有在输出中同时显示目标和目的地的选项。

如果您确实希望在日志文件中实现这一点,有几种方法可供选择。我将从最简单的选项开始,最后介绍最复杂的选项。(将 >> outputfile.txt 替换为您的日志文件)

回显复制命令之前的路径

最简单的方法就是将目的地简单地回显到您的日志中。

例如:

echo Copying files to C:\OT Test >> outputfile.txt
copy "C:\myfiles\OT*" "c:\OT Test\" >> outputfile.txt

使用另一个命令

尽管 copy 是最容易使用的,但它也是最简单的复制命令。它也是历史悠久命令之一。如果您的脚本仅在较新的系统(Windows 8、10、2012 或 2016)上运行,那么您的计算机上也会有 robocopy,它支持在其日志中显示输出路径。虽然 robocopy 是一种高级复制工具,但它生成的日志文件可能就是您所需要的全部。

模仿复制

下一个最好的办法是先使用 for 循环遍历文件,然后在每个循环中首先以您喜欢的格式回显复制行,然后在下一行实际执行复制时,根本不要将其输出到您的日志文件中。

然后,脚本运行时,它会打印到屏幕上,但您的日志文件将完全按照您想要的方式显示。考虑到 for 的复杂性和我有限的时间,我无法为您写出有关 for 命令的详细答案。但无论如何,第一种方法可能已经足够好了。

相关内容