Как я могу переместить самый старый файл в каталоге несколько раз, используя пакетный скрипт?

3

Как я могу переместить самый верхний (самый старый) файл в каталоге один за другим в пакетном скрипте (Windows 7)?

Я использую этот скрипт:

:backup
move something somewhere
timeout 36000
goto backup

Я хочу регулярно перемещать верхний файл в каталоге в другой каталог. Как я могу указать, что только самый верхний (самый старый) файл должен перемещаться при каждом повороте скрипта?

Moe1
источник
2
Что oldestзначит? Самый старый в отношении даты создания или даты последнего изменения? Помните, только то, что вы видите файлы в порядке в Проводнике Windows / File Explorer, не означает, что порядок является постоянным
Дэйв
1
Вам нужен PowerShell для такого использования, а не ограниченный процессор cmd. С помощью PS вы можете перечислить папку, отфильтровать ее до самой старой и затем переместить ее. Вы даже можете настроить отслеживание изменений в файловой системе, а не выполнять цикл.
Джулиан Найт
Ну, скажем, самый старый в отношении даты последнего изменения.
Moe1
Я бы подумал об использовании сценария PowerShell вместо этого, но я бы знал еще меньше, как его написать, поскольку у меня ограниченный опыт написания сценариев PowerShell. По крайней мере, для пакетных сценариев я написал или вернее изменил несколько сценариев в прошлом.
Moe1
@ Moe1: Имейте в виду, что запуск пакетного файла в фоновом режиме в течение 10 часов не является хорошим способом решения проблем. Ограничьте пакетный файл только операцией перемещения и создайте запланированное задание, чтобы запускать его каждые 10 часов.
Каран

Ответы:

0

Как я могу переместить самый старый файл в каталоге несколько раз, используя пакетный скрипт?

Следующий пакетный файл test.cmdбудет перемещать самый старый файл в каталоге:

@echo off
rem parameters
rem %1 source directory
rem %2 target directory
Setlocal EnableDelayedExpansion
:backup
for /f "tokens=*" %%a in ('dir "%1" /a-d /b /o-d') do set something=%%a
move "%1\%something%" "%2\%something%"
timeout 36000
goto backup

Вызовите пакетный файл с параметрами, например:

test olddirectory newdirectory
ДэвидПостилл
источник
Я попробовал это, но я не мог понять, как именно вы имеете в виду. Не могли бы вы вставить код с помощью Move?
Moe1
Но как он узнает, в каком каталоге искать? Держись, я напишу версию с примером каталога.
Мое 1
В том же каталоге, где находится пакетный файл? Допустим, я хочу определить каталог. Я знаю, что это не правильно:
Moe1
@echo off: резервная копия для / f "tokens = *" %% a in ('dir / ad / b / o-d') действительно задает что-то = %% a%%: \ Olddestination% C: \ Newdestination \% что-то% timeout 36000
Перейти к
Очевидно, совершенно неверно. Но было бы неплохо иметь возможность определять каталоги from и to в сценарии.
Мое 1