Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Поиск папок в поддиректории по списку из txt и перемещение

Ответить
Настройки темы
CMD/BAT - [решено] Поиск папок в поддиректории по списку из txt и перемещение

Новый участник


Сообщения: 19
Благодарности: 0

Профиль | Отправить PM | Цитировать


Приветствую!
Помогите решить задачу. Есть заранее составленный список папок в текстовом файле (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

Отправлено: 07:46, 17-04-2016

 

Новый участник


Сообщения: 19
Благодарности: 0

Профиль | Отправить PM | Цитировать


Решение найдено! Спасибо 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

Отправлено: 08:04, 17-04-2016 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 19
Благодарности: 0

Профиль | Отправить PM | Цитировать


Решение не работает, копирует пустые файлы... часть папок скопировал нормально, а часть папок просто пустые

Отправлено: 10:09, 17-04-2016 | #3


Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


Цитата cyberp1983:
Нужно пройтись по этому списку и найти в текущей папке, откуда выполняется скрипт, все папки из списка и переместить их в заданную папку. »


Код: Выделить весь код
@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

Отправлено: 10:50, 17-04-2016 | #4


Новый участник


Сообщения: 19
Благодарности: 0

Профиль | Отправить PM | Цитировать


копировало только структуру подпапок, без файлов(

Отправлено: 11:01, 17-04-2016 | #5


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


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%"
	)
)

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 16:51, 17-04-2016 | #6


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


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 в 17:38. Причина: Учет замечания megaloman


Отправлено: 17:30, 17-04-2016 | #7


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Так работает и на другой диск:
Код: Выделить весь код
@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
.

Отправлено: 18:02, 17-04-2016 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Поиск папок в поддиректории по списку из txt и перемещение

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Поиск файлов в поддиректориях по списку из txt и перемещение Sub-Zero Скриптовые языки администрирования Windows 15 27-03-2017 12:58
CMD/BAT - [решено] Перемещение файлов по списку neprotiv Скриптовые языки администрирования Windows 4 24-01-2013 03:06
CMD/BAT - Перемещение файлов по списку Arsenik77 Скриптовые языки администрирования Windows 4 04-12-2011 20:43
CMD/BAT - [решено] перемещение каталогов по списку neprotiv Скриптовые языки администрирования Windows 4 02-03-2010 09:39
Перемещение по списку в Excel Evita Хочу все знать 3 16-03-2006 01:13




 
Переход