Компьютерный форум 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=352600)

onximinolog 15-12-2022 10:14 2998919

Переместить файлы с определённым расширением и переименовывание при совпадении имени
 
Доброе утро. Помогите с батником.
Нужно чтобы он перемещал, допустим, картинки с расширением jpg из одной папки в другую и при совпадении имён чтобы происходило переименования по типу 01, 02, ну или другим способом, главное чтоб оригинальное название файла не менялось.
Нашёл вот такую команду, но при совпадении имени он спрашивает стоит ли заменить.

Код:

MOVE /-Y D:\test\*.jpg* D:\pictures

DJ Mogarych 15-12-2022 11:26 2998920

Powershell
Код:

$files = dir "D:\test\*.jpg"
$to = "D:\pictures"

$t = (get-date).ToString("yyyyMMddHHmmss")
$files |% {
    if (Test-Path "$to\$($_.name)") {
        mv $_ "$to\$($_.basename)-$t$($_.extension)" -WhatIf
    }
    else {
        mv $_ $to -WhatIf
    }
}

Уберите из кода -Whatif, чтобы реально переносило.

Непонятно, какой файл надо переименовывать - тот, который переносится или тот, который лежит в конечном каталоге и совпадает по имени с переносимым.
Выше вариант с переименованием того, который переносится.

Вариант с переименованием тех, которые лежат в конечном каталоге:
Код:

$files = dir "D:\test\*.jpg"
$to = "D:\pictures"

$files |% {
    $destFile = get-item "$to\$($_.name)" -ErrorAction SilentlyContinue
    if ($destFile) {
        Rename-Item $destFile.fullname "$($destFile.basename)-$($destFile.lastwritetime.tostring("yyyyMMddHHmmss"))$($destFile.extension)" -WhatIf
    }
    mv $_ $to -WhatIf
}


onximinolog 15-12-2022 11:59 2998925

Цитата:

Цитата DJ Mogarych
Уберите из кода -Whatif, чтобы реально переносило. »

Спасибо! Всё работает. Вот только через PowerShell, не знаете как запустить с помощью батника .ps1?

И ещё, можно ли чтобы к наименованию файлов добавлялись просто цифры 1,2 и тд вместо даты? Неважно какой файл будет переименовываться, переносимый или тот, который в конечном каталоге.

DJ Mogarych 15-12-2022 13:07 2998930

Удобнее по ярлыку
Код:

powershell -f "C:\путь\к\скрипту\script.ps1"
Цитата:

Цитата onximinolog
1,2 и тд вместо даты »

Представим ситуацию: в конечной папке есть не только файл 1.txt, но и 1-1.txt.
Скрипт проверяет, что 1.txt уже есть, и перезаписывает 1-1.txt.


Время: 22:44.

Время: 22:44.
© OSzone.net 2001-