Войти

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


cyberp1983
17-04-2016, 07:46
Приветствую!
Помогите решить задачу. Есть заранее составленный список папок в текстовом файле (life.txt) вида:
79032177652
79032178139
79032199051
79032239615 и так далее.
Нужно пройтись по этому списку и найти в текущей папке, откуда выполняется скрипт, все папки из списка и переместить их в заданную папку.
Те папки которые в процессе работы не были найдены - занести в отдельный текстовый файл.
Спасибо!

Нашел на форуме этот скрипт, но он ищет файлы а не папки.

@echo off
chcp 1251>nul

set "list=list.txt"
set "folder=D:\Заданная папка"
set "not_found=not_found.txt"

2>nul md "%folder%"
>"%not_found%" (
for /f "usebackq delims=" %%i in ("%list%") do (
for /f "delims=" %%j in ('
"2>nul dir /a-d/b/s "%%i""
') do (
>nul move "%%j" "%folder%"
)
)|| (
echo %%i
)
)

exit /b

cyberp1983
17-04-2016, 08:04
Решение найдено! Спасибо NiOl


@echo off
SetLocal EnableExtensions
SetLocal EnableDelayedExpansion

set Lst=C:\Users\Cyber\Desktop\old\lifelist.txt
set Src=C:\Users\Cyber\Desktop\old
set Dst=C:\Users\Cyber\Desktop\old\LIFE

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

cyberp1983
17-04-2016, 10:09
Решение не работает, копирует пустые файлы... часть папок скопировал нормально, а часть папок просто пустые

Georgio
17-04-2016, 10:50
Нужно пройтись по этому списку и найти в текущей папке, откуда выполняется скрипт, все папки из списка и переместить их в заданную папку. »



@echo off
>nul chcp 1251

set "list=Список папок.txt"
set "folder=D:\Заданная папка"
set "not_found=Не найдено.txt"

2>nul md "%folder%"
>"%not_found%" (
for /f "usebackq delims=" %%i in ("%list%") do @(
>nul 2>&1 move "%%i" "%folder%"|| echo %%i
)
)

exit /b

cyberp1983
17-04-2016, 11:01
копировало только структуру подпапок, без файлов(

megaloman
17-04-2016, 16:51
Georgio, move "%%i" "%folder% Будет работать только если обе папки на одном диске. Иначе получим: Отказано в доступе.
Мой вариант:@Echo off

Set "Out=E:\Out"
Set "What=SpisDir.txt"

Set "No=NotExist.txt"

Del "%No%" 2>nul

SetLocal EnableExtensions EnableDelayedExpansion

FOR /F "usebackq delims=" %%i IN ("%What%") DO (
Dir /b /A:D "%%i" >nul 2>nul
If !ErrorLevel!==0 (
Md "%Out%\%%i" 2>Nul
Move "%%i\*.*" "%Out%\%%i\" >nul 2>nul
Rd "%%i" 2>nul
) Else (
Echo Нет %%i >>"%No%"
)
)

alpap
17-04-2016, 17:30
cyberp1983,

@echo off

set "list=spisok_p.txt"
set "folder=%Userprofile%\Desktop\papka_z"
set "not_found=spisok_not.txt"

for /f "delims=" %%a in ('type "%list%"') do if exist "%%a" 2>nul md "%folder%"&>nul 2>&1 move "%%a" "%folder%"
>"%not_found%" (dir/ad/b|findstr/vg:"%list%")
exit/b
.
На другой диск не получится.

alpap
17-04-2016, 18:02
Так работает и на другой диск:

@echo off

set "list=spisok_p.txt"
set "folder=D:\papka_z"
set "not_found=spisok_not.txt"

for /f "delims=" %%a in ('type "%list%"') do if exist "%%a" 2>nul md "%folder%"&>nul 2>&1 xcopy /e "%%a" "%folder%\%%a\"&2>nul rd /q /s "%%a")
>"%not_found%" (dir/ad/b|findstr/vg:"%list%")
exit/b
.




© OSzone.net 2001-2012