PDA

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


strel9
13-11-2018, 14:52
помогите пожалуйста написать батник, то что нужно найти не могу, а самому написать не хватает знаний.
есть такой батник выполняющий только перемещение из одной папки, помогите пожалуйста доработать.

@Echo Off

Set Otkuda=E:\A\1
Set Kuda=E:\A\

Move /Y "%Otkuda%\*.jpg*" "%Kuda%\" >nul 1>nul 2>nul
FOR /D %%d IN ("%Otkuda%\*.jpg*") DO Move /Y "%%d" "%Kuda%\" >nul 1>nul 2>nul

нужен такой результат:

например
копирую батник в папку "123"
при запуске он пробегает по всем вложенным папкам (один уровень вложенности), ищет в каждой папке файл 11.jpg
переименовываем в название вложенной папки в которой он лежит и после этого перемещаем в корневую папку, в которой батник.

было
123/01/11.jpg
123/02/11.jpg
123/03/11.jpg

результат
123/01.jpg
123/02.jpg
123/03.jpg

alpap
13-11-2018, 17:22
предохранитель - echo

@echo off
set "d=C:\123"
set "f=11.jpg"

for /d %%d in ("%d%\*") do for /f "delims=" %%f in ('2^>nul dir /a-d/b/s "%%~d\%f%"') do echo copy "%%f" "%d%\%%~nxd%%~xf"
pause

megaloman
13-11-2018, 17:44
копирую батник в папку "123"
... он пробегает по всем вложенным папкам (один уровень вложенности)»@Echo Off
FOR /D %%d IN (*.*) DO If Exist "%%d\11.jpg" Move "%%d\11.jpg" "%%d.jpg" >nulИли@Echo Off
Set "FileName=11.jpg"
FOR /D %%d IN (*.*) DO Call :MyMove "%%d" "%FileName%"
GoTo :Eof

:MyMove
If Exist "%~1\%~2" Move "%~1\%~2" "%~1%~x2" >nul
GoTo :Eof
А если не копировать@Echo Off
Set "BoxIn=Z:\Box_In\123"
Set "FileName=11.jpg"
FOR /D %%d IN ("%BoxIn%\*.*") DO Call :MyMove "%%d" "%BoxIn%" "%FileName%"
GoTo :Eof

:MyMove
If Exist "%~1\%~3" Move "%~1\%~3" "%~2\%~nx1%~x3" >nul
GoTo :Eof

strel9
13-11-2018, 18:46
megaloman, супер, спасибо большое) именно то, что нужно :clapping:




© OSzone.net 2001-2012