удалить файлы в нескольких подпапках с помощью пакета - PullRequest
0 голосов
/ 07 марта 2019

У меня есть каталог, который выглядит следующим образом

"C: \ sales \ client1 \ file1".

Папка client1 не является статичной и может отличаться отclient1 to client100, и каждый файл в папке клиента может варьироваться от file1 до file8.

Я хочу удалить 4 специфических файла (например, file1, file3, file6 и file8) в каждой папке клиента на основе маски (/ m file1 *) старше 7 дней (d-7) с использованием пакета.

До сих пор каждое решение, которое я пробовал, работает для указанного каталога

Спасибо

1 Ответ

1 голос
/ 07 марта 2019

Поскольку ваша маска представляет собой файл, а @path будет содержать имя файла,

вам придется перейти в папку с добавленным \.. @path\..

Так попробуйте:

 forfiles /P C:\Sales /S /M file1* /D -7 /C "cmd.exe /c @cd /D @path\..&del file1 file3 file6 file8"

Эта команда также найдет файл1, соответствующий критериям, непосредственно в C:\Sales

Более универсальное решение с использованием PowerShell

Get-ChildItem "C:\Sales\Client*\file1" -File | 
  Where LastWriteTime -lt (Get-Date).Date.AddDays(-7)| 
    ForEach-Object {
      PushD $_.Directory
      Remove-Object file[1368]
      PopD
    }
...