我在批处理文件中使用forfiles来查找在最后一天更改的所有文件并将它们保存到存档目录中。
该脚本可以完美地将文件从一个目录拉到另一个目录,但是当有子目录时它不会执行所需的功能。
例如,我有一个源位置和一个存档目录。在源目录中有以下结构:
C:\Temp\Source\test1.txt
C:\Temp\Source\Folder\test2.txt
存档目录只是以下位置,其中没有文件/子文件夹:
C:\Temp\Archive
我当前的使用ForFiles
同时拾取test1.txt
并将test2.txt
它们转储到Archive
目录中,这是一个不希望的结果:
C:\Temp\Archive\test1.txt
C:\Temp\Archive\test2.txt
我想要做的是保留文件夹结构并得到这个结果:
C:\Temp\Archive\test1.txt
C:\Temp\Archive\Folder\test2.txt
这是我目前用来实现不良结果的代码:
FORFILES /S /p %source_dir% /m *.* /d +%datedsub% /c "cmd /c copy @path %archive_dir%"
%datesub%
只是我决定从哪个日期复制的变量。
我注意到我可以通过使用@relpath
参数来实现这一点,删除引号和.\
,然后将其附加到 ,%archive_dir%
以便我指定整个目标路径而不仅仅是Archive
位置。
我的问题是我不知道如何@
在命令中操作变量ForFiles
。