Войти

Показать полную графическую версию : [решено] Переместить файлы по маске, кроме Х штук последних, запись в лог


blacks2
27-11-2020, 00:34
Здравствуйте.
Прошу помощи.

Переместить файлы по маске, кроме Х штук последних, запись в лог.


Похожие примеры уже поднимались в топике.
Прежде чем задаться вопросом искал по форуму, гуглил.
megaloman даже в ответе на один из моих вопросов, недавно, приводил решение для удаления.

Но попробовав сам, переписать решение megaloman на перемещение файлов...
- не получилось, фалы просто копируются куда то в ноль или просто не копируются


Помогите пожалуйста поправить скрипт до рабочего состояния.

Спасибо!



@echo off
Set Too=m:\temp_copid_to
Call :DelOld "m:\temp_copid_from" "work_*" 3 "m:\temp_copid_to\temp_copid.log"

pause
Exit /B

:DelOld
:: FOR /F "usebackq skip=%3 delims=" %%d IN (`2^>nul Dir "%~1\%~2" /B /A:D /O:-N`) DO 2>nul Rd /S /Q "%~1\%%d" &&>>%4 Echo "%~1\%%d"
:: FOR /F "usebackq skip=%3 delims=" %%d IN (`2^>nul Dir "%~1\%~2" /B /A:D /O:-N`) DO 2>nul move "%~1\%%d" to "%Too%" &&>>%4 Echo "%~1\%%d"
FOR /F "usebackq skip=%3 delims=" %%d IN (`2^>nul Dir "%~1\%~2" /B /A:D /O:-N`) DO 2>nul move "%~1\%%d" to "%Too%" &&>>%4 Echo "%~1\%%d"
Exit /B

DJ Mogarych
27-11-2020, 09:09
Ребята, осваивайте уже Powershell, ну сколько можно стюардессу-то выкапывать?


# variables
$x = 5
$log = "d:\temp\moved.txt"

# process
$filesToMove = dir "D:\temp\images\*.png" |sort CreationTime |select -SkipLast $x
$filesToMove |mv -Destination "D:\temp\images2"

# log
get-date |Out-File "$log" -Encoding default -Append
$filesToMove |ft |Out-File "$log" -Encoding default -Append

megaloman
27-11-2020, 10:54
@Echo Off
>>"e:\Movied.log" Echo ==== %Date% %Time%
Call :MoveOld "Z:\Box_In" "Z:\Box_Arc" "work_*.*" 3 "e:\Movied.log"
Exit /B

:MoveOld
FOR /F "usebackq skip=%4 delims=" %%d IN (`2^>nul Dir "%~1\%~3" /B /A:-D /O:-N`) DO (
>>%5 Echo Move /Y "%~1\%%d" "%~2\"
>nul 2>>%5 Move /Y "%~1\%%d" "%~2\"
)
Exit /B

blacks2
29-11-2020, 08:49
FOR /F "usebackq skip=%4 delims=" %%d IN (`2^>nul Dir "%~1\%~3" /B /A:-D /O:-N`) DO ( »
megaloman Огромное вам спасибо!

megaloman
29-11-2020, 12:11
blacks2, Только сейчас осозналкроме Х штук последних »Как понять? Сейчас последние по имени (/O:-N в Dir), а если надо по дате/времени последнего изменения, то вместо этого ключа надо /O:-D /T:W. Возможно имена у Вас содержат дату-время в корректном формате, например, ГГГГММДДччммсс, тогда это неважно.




© OSzone.net 2001-2012