如何使用ForFiles操纵@path之类的参数

时间:2019-05-02 04:53:45

标签: batch-file forfiles

我正在中使用来查找过去一天内所有已更改的文件,并将它们保存到存档目录中。

该脚本可以完美地将文件从一个目录拉到另一个目录,但是当存在子目录时,该脚本无法执行所需的功能。

例如我有一个源位置和一个存档目录。在源目录中具有以下结构:

C:\Temp\Source\test1.txt
C:\Temp\Source\Folder\test2.txt

存档目录只是下面的位置,其中没有文件/子文件夹:

C:\Temp\Archive

我目前对ForFiles的使用会同时拾取test1.txttest2.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变量。

0 个答案:

没有答案