我正在forfiles中使用batch-file来查找过去一天内所有已更改的文件,并将它们保存到存档目录中。
该脚本可以完美地将文件从一个目录拉到另一个目录,但是当存在子目录时,该脚本无法执行所需的功能。
例如我有一个源位置和一个存档目录。在源目录中具有以下结构:
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
变量。