Тема: CMD/BAT: Как переместить папку на 2 папки вверх?
Путь к папке такой
random_name/data/data/nugnaya_papka/содержимое_нужно_папки
как сделать такой:
random_name/содержимое_нужно_папки
random_name в каждой папки разный.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Путь к папке такой
random_name/data/data/nugnaya_papka/содержимое_нужно_папки
как сделать такой:
random_name/содержимое_нужно_папки
random_name в каждой папки разный.
e::
Send ^{sc1E} ;Ctrl + A
Sleep, 50 ;продолжительность засыпания скрипта подберите сами
Send ^{sc2D} ;Ctrl + X
Loop, 4
{
Sleep, 100
Send !{sc148} ;Alt + стрелка вверх - переход на уровень вверх
}
Sleep, 50
Send ^{sc2F} ;Ctrl + V
q::Return
isxodnik, это не ветка AHK.
random_name в каждой папки разный
Здесь два варианта:
1. передавать каталог-источник как параметр скрипту
set "move_src=%~1"
set "move_dst=%~1\..\.."
2. запускать скрипт из каталога-источника
set "move_src=%CD%"
set "move_dst=%CD%\..\.."
Jack_Dream, вот насколько я понял задачу - попытался сделать универсальное решение.
Не могу только понять в условии: "random_name в каждой папки разный".
У меня параметрами передаётся полный путь к нужной папке и кол-во уровней, на сколько переместить вверх её содержимое.
Сама нужная папка, став пустой, удаляется.
Команда move вызывается 2 раза - отдельно для файлов из нужной папки и для подпапок.
PS. У меня написано в коде "1-й параметр: полный путь к папке", но можно также и относительные пути использовать.
@echo off & title %~nx0 & SetLocal EnableExtensions EnableDelayedExpansion
goto :Main
rem ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:Help
echo.Перемещение содержимого (файлов и папок) выбранной папки Folder вверх на N (^>0) уровней
echo.Вызов : %~nx0 Папка Колво_уровней
echo.Пример: %~nx0 ParentFolder\Fld_A\Fld_B\Fld_C 3
echo. - перемещает содержимое папки Fld_C на 3 уровня вверх (в папку ParentFolder).
echo.
:PauseEnd
pause
:End
exit /b
rem ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:Main
if "%~1"=="" goto :Help
if "%~2"=="" goto :Help
rem 1-й параметр: полный путь к папке.
set "sFolder=%~1"
if "%sFolder:~-1%"=="\" set "sFolder=%sFolder:~0,-1%" &rem убираем конечный символ "\"
rem 2-й параметр: количество уровней вверх.
set /a nLevels=%~2
if !nLevels! lss 1 goto :Help
rem Строим относительный путь к верхней папке:
set "sLevels="
for /l %%i in (1,1,!nLevels!) do (
set "sLevels=\..!sLevels!"
)
for %%a in ("!sFolder!!sLevels!") do (
echo."!sFolder!" -^> "%%~fa"
)
rem Переносим одиночные файлы из sFolder:
move "!sFolder!\*.*" "!sFolder!!sLevels!" >nul
rem Переносим подпапки из sFolder:
for /d %%a in ("!sFolder!\*.*") do (
move "%%~a" "!sFolder!!sLevels!" >nul
)
rem Удаляем пустую папку sFolder:
rmdir "!sFolder!" >nul
pause
EndLocal
exit /b
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться