Показать полную графическую версию : [решено] перемещение каталогов по списку
neprotiv
26-02-2010, 11:25
здравствуйте. очень хотелось бы батник который делал следущее
перемещал каталоги (со всеми файлами, что внутри), которые записаны в тхт документе, в другую папку
к примеру информация находится в D:\spisok.txt, а каталоги в D:\data1\ чтоб переместило в D:\data2\
помогите пожалуйста...я в этом деле полный профан
@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
26-02-2010, 20:57
NiOl, большое вам спасибо, что не обошли стороной
но вот в чем проблема, не переносятся каталоги с файлами, а просто создаются пустые каталоги со списка (которые есть в каталоге дата1)
neprotiv
27-02-2010, 01:30
спасибо еще раз.разобрался и немного переделал...так как создавало пустые фолдеры в дата 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
02-03-2010, 09:39
а можно ли както использовать несколько списков одновременно с разными путями назначаения, но с одинаковым источником в одном батнике? и как написать?
например
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
спасибо
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.