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

shadowbat 06-05-2015 13:59 2504416

Перенести и переименовать файлы из подкаталогов
 
Здравствуйте
как можно перенести все файлы из подкаталогов в текущей %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 2504484

Цитата:

Цитата shadowbat
нужно закинуть 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 2504490

Georgio это превосходно! спасибо


Время: 09:56.

Время: 09:56.
© OSzone.net 2001-