CMD/BAT - [решено] перемещение каталогов по списку

Ответить
Аватара пользователя
neprotiv

CMD/BAT - [решено] перемещение каталогов по списку

Сообщение neprotiv »

здравствуйте. очень хотелось бы батник который делал следущее



перемещал каталоги (со всеми файлами, что внутри), которые записаны в тхт документе, в другую папку

к примеру информация находится в D:\spisok.txt, а каталоги в D:\data1\ чтоб переместило в D:\data2\



помогите пожалуйста...я в этом деле полный профан
Аватара пользователя
neprotiv

Re: CMD/BAT - [решено] перемещение каталогов по списку

Сообщение neprotiv »

Код:

Код: Выделить всё

@echo off
SetLocal EnableExtensions
SetLocal EnableDelayedExpansion
set Lst=D:\spisok.txt
set Src=D:\data1\
set Dst=D:\data2\
for /f "UseBackQ Delims=" %%S in ("%Lst%") do (
call :prc %%S 
for /f "Delims=" %%D in ('dir /b /s /on /ad %%S') do call :prc %%D
)
exit
:prc
set D=%1
set D=!D:%Src%=!
md %Dst%!D! 2>nul
move "%1\*.*" "%Dst%!D!\" 2>nul
if not %ErrorLevel%==0 echo "%1\*.*" =^> "%Dst%!D!\">>%~pdn0.err
exit /b

PS: ошибки отрабатываются только примерно, будет спотыкаться даже на пустых каталогах, см *.ERR
Аватара пользователя
neprotiv

Re: CMD/BAT - [решено] перемещение каталогов по списку

Сообщение neprotiv »

NiOl, большое вам спасибо, что не обошли стороной

но вот в чем проблема, не переносятся каталоги с файлами, а просто создаются пустые каталоги со списка (которые есть в каталоге дата1)
Аватара пользователя
neprotiv

Re: CMD/BAT - [решено] перемещение каталогов по списку

Сообщение neprotiv »

спасибо еще раз.разобрался и немного переделал...так как создавало пустые фолдеры в дата 2 ии оставляло пустые фолдеры в дата1

а также убрал отчет об ошибках...

еще раз спасибо. без вас не зделал бы



@echo off

SetLocal EnableExtensions

SetLocal EnableDelayedExpansion



set Lst=D:\spisok.txt

set Src=D:\data1\

set Dst=D:\data2\



for /f "UseBackQ Delims=" %%S in ("%Lst%") do (

call :prc %%S

for /f "Delims=" %%D in ('dir /b /s /on /ad %%S') do call :prc %%D

)

exit



:prc

set D=%1

set D=!D:%Src%=!

md %Dst%!D! 2>nul

move "%1\*.*" "%Dst%!D!\" 2>nul

for /d %%i in ("%Src%*") do rd /q "%%i" 2>nul

for /d %%i in ("%Dst%*") do rd /q "%%i" 2>nul

exit /b
Аватара пользователя
neprotiv

Re: CMD/BAT - [решено] перемещение каталогов по списку

Сообщение neprotiv »

а можно ли както использовать несколько списков одновременно с разными путями назначаения, но с одинаковым источником в одном батнике? и как написать?



например



set Lst1=D:\spisok1.txt

set Lst2=D:\spisok2.txt



set Src=D:\unsorted\



set Dst1=D:\data1\

set Dst2=D:\data2\



тоисть по списку1 шло в дата1

по списку2 шло в дата2



спасибо
Ответить

Вернуться в «Скриптовые языки администрирования Windows»