Войти

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


shadowbat
06-05-2015, 13:59
Здравствуйте
как можно перенести все файлы из подкаталогов в текущей %CD% папке? и добавить к именам файлов имена папок, в которых они ранее лежали

например есть структура папок
C:\Каталог\Папка1\файл1.txt
C:\Каталог\Папка2\Папка3\файл2.jpg

нужно закинуть bat файл в папку "Каталог" и запустить
в результате он переименовывает и переносит все файлы в "корень", удаляет старые пустые папки.
Результат
C:\Каталог\Папка1-файл1.txt
C:\Каталог\Папка2-Папка3-файл2.jpg

Georgio
06-05-2015, 17:19
нужно закинуть 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

shadowbat
06-05-2015, 17:36
Georgio это превосходно! спасибо




© OSzone.net 2001-2012