Показать полную графическую версию : [решено] Поиск папок в поддиректории по списку из 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
Решение не работает, копирует пустые файлы... часть папок скопировал нормально, а часть папок просто пустые
Нужно пройтись по этому списку и найти в текущей папке, откуда выполняется скрипт, все папки из списка и переместить их в заданную папку. »
@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%"
)
)
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
.
На другой диск не получится.
Так работает и на другой диск:
@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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.