Как манипулировать параметрами типа @path с помощью ForFiles - PullRequest
0 голосов
/ 02 мая 2019

Я использую в , чтобы найти все файлы, измененные за последний день, и сохранить их в каталоге архива.

Сценарий отлично работает для перетаскивания файлов из одного каталога в другой, однако он не выполняет нужную функцию при наличии подкаталогов.

например, у меня есть расположение источника и каталог архива.В исходном каталоге есть следующая структура:

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.

...