Добавление файлов в архив в скрипте Windows - PullRequest
0 голосов
/ 15 мая 2018

Я хотел переместить файлы в папку archive, кроме максимальной отметки времени в системной дате, измененной в файле, и хотел сделать это для четырех разных папок, например folder 3 перейдет в folder4 и folder 5 в folder 6 т.е. folder: file1 имеет системную дату, измененную 12:00 AM, а file 2 имеет 12:21 AM, тогда file 1 заархивирует таким образом, что он должен заархивировать весь оставшийся файл, который меньше последней измененной даты .

Я хочу это в командной строке Windows

Get-ChildItem -Path "C: \ app \ folder1 \" Sort-Object LastWriteTime -Descending Move-Destination t-Object -Skip 1 Move-Item -Destination "C: \ app \ folder2 \" |

Редактировать

Я надеялся на изменение принятого ответа, указанного в моем последнем вопросе .

Идея состоит в том, чтобы запустить скрипт в каждом из каталогов вместо одного Set в строке 2

Это был код:

@Echo Off
Set "dirSrc=C:\App\Folder1"
Set "dirDst=C:\App\Folder2"
Set "extSrc=*.txt"
If Exist "%dirSrc%\%extSrc%" (CD /D "%dirSrc%" 2>Nul || Exit /B
) Else Exit /B
If Not Exist "%dirDst%\" (MD "%dirDst%" 2>Nul || Exit /B)
For /F "Skip=1 Delims=" %%A In ('Dir /B/A-D-H-L-S/O-D/TW "%extSrc%"'
) Do Move /Y "%%A" "%dirDst%">Nul 2>&1

Дерево каталогов, с которым я надеялся работать, выглядит примерно так:

C:\USERS\GARANG\DOCUMENTS\INPUT_FILES 
|   movefiles.cmd 
| 
+---Advisory_rate 
|   |   Local Project Tracker_2016 - 26 April 2018.xlsx 
|   | 
|   \---Archive 
|           Advise rate mapping - Copy.xls 
|           Advise rate mapping.xls 
|           CbCR Notification Tracker - Copy.xlsx 
|           CbCR Notification Tracker.xlsx 
| 
+---Internation_Project_Tracker1 
|   |   International Project Tracker_2016 - 28 March 2018 - Copy.xlsx 
|   |   International Project Tracker_2016 - 6 March 2018.xlsx 
|   |   Local Project Tracker_2016 - 26 April 2018.xlsx 
|   | 
|   \---Archive 
|           CbCR Notification Tracker - Copy.xlsx 
|           CbCR Notification Tracker.xlsx 
| 
+---Local_Project_Tracker 
|   |   Local Project Tracker_2016 - 26 April 2018 - Copy.xlsx 
|   |   Local Project Tracker_2016 - 26 April 2018.xlsx 
|   | 
|   \---Archive 
|           CbCR Notification Tracker - Copy.xlsx 
|           CbCR Notification Tracker.xlsx 
| 
\---Notification_Tracker 
    |   Local Project Tracker_2016 - 26 April 2018.xlsx 
    | 
    \---Archive 
           CbCR Notification Tracker - Copy.xlsx 
           CbCR Notification Tracker.xlsx

1 Ответ

0 голосов
/ 17 мая 2018

После нескольких обменов после того, как вы приняли мой ответ в своем последнем вопросе, я обновил ваш вопрос, включив в него последние подтвержденные требования и модификацию моего последнего ответа ниже:

@Echo Off
Set "dirSrc=C:\Users\garang\Documents\input_files"
Set "dirDst=Archive"
Set "extSrc=*.xls"
CD /D "%dirSrc%" 2>Nul || Exit /B
For /D %%A In (*) Do (PushD "%%A"
    For /F "Skip=1 Delims=" %%B In (
        'Dir /B/A-D-H-L-S/O-D/TW "%extSrc%" 2^>Nul') Do (
        If Not Exist "%dirDst%\" MD "%dirDst%"
        Move /Y "%%B" "%dirDst%">Nul 2>&1)
    PopD)

Поместите этот скрипт, movefiles.cmd, в исходный каталог, (как Set в строке 2) , C:\Users\garang\Documents\input_files и дважды щелкните по нему.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...