Войти

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


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

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

DJ Mogarych
15-12-2022, 11:26
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
Уберите из кода -Whatif, чтобы реально переносило. »
Спасибо! Всё работает. Вот только через PowerShell, не знаете как запустить с помощью батника .ps1?

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

DJ Mogarych
15-12-2022, 13:07
Удобнее по ярлыку

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


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




© OSzone.net 2001-2012