Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Переместить файлы по маске, кроме Х штук последних, запись в лог (http://forum.oszone.net/showthread.php?t=347136)

blacks2 27-11-2020 00:34 2941142

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

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


Похожие примеры уже поднимались в топике.
Прежде чем задаться вопросом искал по форуму, гуглил.
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 2941157

Ребята, осваивайте уже 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 2941172

Код:

@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 2941379

Цитата:

Цитата megaloman
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 2941403

blacks2, Только сейчас осознал
Цитата:

Цитата blacks2
кроме Х штук последних »

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


Время: 00:54.

Время: 00:54.
© OSzone.net 2001-