CMD/BAT - [решено] Перенести и переименовать файлы из подкаталогов

Ответить
Аватара пользователя
shadowbat

CMD/BAT - [решено] Перенести и переименовать файлы из подкаталогов

Сообщение shadowbat »

Здравствуйте

как можно перенести все файлы из подкаталогов в текущей %CD% папке? и добавить к именам файлов имена папок, в которых они ранее лежали



например есть структура папок

C:\Каталог\Папка1\файл1.txt

C:\Каталог\Папка2\Папка3\файл2.jpg



нужно закинуть bat файл в папку "Каталог" и запустить

в результате он переименовывает и переносит все файлы в "корень", удаляет старые пустые папки.

Результат

C:\Каталог\Папка1-файл1.txt

C:\Каталог\Папка2-Папка3-файл2.jpg
Аватара пользователя
Georgio

Re: CMD/BAT - [решено] Перенести и переименовать файлы из подкаталогов

Сообщение Georgio »

Цитата shadowbat:



нужно закинуть bat файл в папку "Каталог" и запустить

в результате он переименовывает и переносит все файлы в "корень", удаляет старые пустые папки.
CMD/BAT - [решено] Перенести и переименовать файлы из подкаталогов








Код:

Код: Выделить всё

@echo off
subst #: .&& pushd #:\|| exit/b 1
for /f "delims=" %%i in ('2^>nul dir/a-d/b/s') do (
 for /f "tokens=* delims=#:\" %%j in ("%%i") do (
  set x=%%j
  >nul 2>&1 cmd/v/c move "%%i" "!x:\=-!"
 )
)
rem Если в каких-то папках останутся неперемещённые файлы
rem (скрытые, системные или занятые каким-то процессом),
rem то такие папки удалены не будут.
for /f "delims=" %%i in ('2^>nul dir/ad/b/s') do (
 for /f %%j in ('2^>nul dir/a-d/b/s "%%i"^| find/c /v ""^|findstr/x 0') do (
  2>nul rd/q/s "%%i"
 )
)
popd& subst/d #:
exit/b 0
Ответить

Вернуться в «Скриптовые языки администрирования Windows»