перемещение файлов/папок на 1 уровень вверх

bighead

Активный пользователь
Столкнулся с необходимостью тут поднимать папки с файлами на уровень вверх, но чтобы папки не убивались.
В итоге ничего путного не нашёл, кроме одной программы:

LevelZap после установки появляется в контекстном меню "Mobe content up and zup", после чего содержимое папки будет перемещено из папки на уровень вверх.

Недостаток программы, что она работает только после установки. Портативной версии нет. А чтобы удалить без следов надо перезагружать компьютер.

Попалась ещё одна интересная программа flatten-folder-menu . Она работает без установки, по принципу похожа на первую, но с той лишь разницей, что при применении её на папку удаляются все подпапки, а их содержимое перемещается в корень изначальной папки.

Хотелось бы найти скрипт/портативный вариант первой программы, но пока безуспешно.
 

CryptoNick

Администратор
не понимаю в чём сложность то? скопировать bat_ником куда угодно
 

bighead

Активный пользователь
Есть 10+ папок в корне на диске, мне нужно периодически копировать их содержимое(помимо файлов там ещё папки) в корень диска. Батниками насколько я посмотрел варианты можно только делать это прописывая названия папок, но с тем же успехом можно вручную скопировать содержимое.

Вариант LevelZap меня полностью устраивает, кроме того что требует установки, ну и из мелочей запрос при действии на каждой папку.
 
W

wadimus

Гость
у меня батник получения последних версий SDI (SamLab-а и Glenn Delahoy) - архивов
при распаковки архива получаем имя папки и в ней (а папке) уже располагаются файлы и подкаталоги
а нужно распаковать всё в корень!
приведу фрагмент обработки (с комментами)
Код:
:: распаковываем архив в корень sdi_o
"%~dp07z.exe" x "%~dp0..\%sdi_o%\%w2%" -y -o"%~dp0..\%sdi_o%"
:: проблема такая .. в архиве есть начальный каталог, типа SDIO_1.4.1.675 (и в нём уже содержатся нужные нам файлы)
:: все нужные нам файлы при разархивации будут не в корне, а в папке SDIO_1.4.1.675
:: поэтому делаем так - все файлы и папки перемещаем из папки SDIO_1.4.1.675 (SDI*) в корень (на каталог ниже)
:: переместили и тут же удалили пустую папку
:: в итоге получим все файлы в корне sdi_o с исходной структурой
for /f %%a in ('dir /a:d /b "%~dp0..\%sdi_o%\SDI*"') do (
    XCOPY "%~dp0..\%sdi_o%\%%a" "%~dp0..\%sdi_o%" /H /E /G /Q /R /Y
    rmdir "%~dp0..\%sdi_o%\%%a" /s /q
)
:: архив SDIO.zip отработан, его удаляем
del /f /q "%~dp0..\%sdi_o%\%w2%"
 

bighead

Активный пользователь
wadimus интересно, спасибо) но все папки с разными названиями, включая кириллицу, и не повторяющиеся.
 
W

wadimus

Гость
Код:
for /f %%a in ('dir /a:d /b "%~dp0%тут-корневая-папка%\%тут любая-папка-в-корневой%"') do (
    XCOPY "%~dp0%тут-корневая-папка%\%%a" "%~dp0%тут-корневая-папка%" /H /E /G /Q /R /Y
    rmdir "%~dp0%тут-корневая-папка%\%%a" /s /q
)
как-то-так .. не проверял, чиса переименовал свои папки и файлы в не-свои
 

bighead

Активный пользователь
Работает, но есть нюанс, папки с пробелами не переваривает. Т.е. "Новую папку" не отработает))
 
W

wadimus

Гость
не понял?
корневая "папка моей семьи" в ней "папка моего сына" и "мои файлы"
неужели не обработает?
xcopy "папка1" "папка2" /ключи
 

bighead

Активный пользователь
Именно. "Папка моего сына" - не отрабатывает. "Папкамоегосына" - на отлично. А вот имя корневой непринципиально.
 

bighead

Активный пользователь
Нашёл решение)

Код:
for /f "tokens=* delims=" %%a in ('dir /a:d /b "%~dp0%тут-корневая-папка%\%тут любая-папка-в-корневой%"') do (
    xcopy "%~dp0%тут-корневая-папка%\%%a" "%~dp0%тут-корневая-папка%" /H /E /G /Q /R /Y
    rmdir "%~dp0%тут-корневая-папка%\%%a" /s /q
)
Так работает с пробелом.

А причина:

Команда for принимает данные только перед пробелом. Нашёл что необходимо добавить два параметра "tokens = * delims ="

Но мне нужны папки и файлы, не в другой(корневой папке), а в корне диска. Так что продолжаю поиск решения :)
 

Последние темы

Верх