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

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

Ответить
Настройки темы
CMD/BAT - Поиск и сортировка файлов по части названия

Пользователь


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

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


Друзья, доброго времени суток.
Ситуация следующая - есть папка, в ней еще куча папок с файлами.
Файлы помечены в конце названия плюсами через пробел, например:

имя_файла +.txt
имя_файла + +.txt
имя_файла + + +.txt


Таких файлов по вложенным разным папкам больше нескольких тысяч.
Нужно отсортировать все эти файлы по трем разным папкам - с одним, двумя и тремя плюсами.
Помогите пожалуйста с данной ситуацией...
Заранее благодарю...

Отправлено: 19:14, 03-05-2017

 

Ветеран


Contributor


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

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


С сохранением структуры папок
Код: Выделить весь код
@Echo Off

Set "BoxIn=Z:\Box_In"

Set "File1=* +.txt"
Set "File2=* + +.txt"
Set "File3=* + + +.txt"

Set "BoxOut1=Z:\Box_Out\+"
Set "BoxOut2=Z:\Box_Out\+ +"
Set "BoxOut3=Z:\Box_Out\+ + +"

FOR /F "usebackq delims=" %%f IN (`Dir "%BoxIn%\%File3%" /B /A-D /S 2^>nul`) DO Call :PlusMove "%%f" "%BoxOut3%"
FOR /F "usebackq delims=" %%f IN (`Dir "%BoxIn%\%File2%" /B /A-D /S 2^>nul`) DO Call :PlusMove "%%f" "%BoxOut2%"
FOR /F "usebackq delims=" %%f IN (`Dir "%BoxIn%\%File1%" /B /A-D /S 2^>nul`) DO Call :PlusMove "%%f" "%BoxOut1%"

GoTo :Eof

:PlusMove
	Set "In=%~dp1"
	Set "Out=%~2"

	Call Set "Out=%%In:%BoxIn%=%Out%%%
	
	If Not Exist "%Out%" Md "%Out%"
	Move %1 "%Out%" >nul 
GoTo :Eof
Без сохранения структуры папок (внимание! при совпадении имён в разных папках останется один файл с этим именем)
Код: Выделить весь код
@Echo Off

Set "BoxIn=Z:\Box_In"

Set "File1=* +.txt"
Set "File2=* + +.txt"
Set "File3=* + + +.txt"

Set "BoxOut1=Z:\Box_Out\+"
Set "BoxOut2=Z:\Box_Out\+ +"
Set "BoxOut3=Z:\Box_Out\+ + +"

FOR /F "usebackq delims=" %%f IN (`Dir "%BoxIn%\%File3%" /B /A-D /S 2^>nul`) DO Call :PlusMove "%%f" "%BoxOut3%"
FOR /F "usebackq delims=" %%f IN (`Dir "%BoxIn%\%File2%" /B /A-D /S 2^>nul`) DO Call :PlusMove "%%f" "%BoxOut2%"
FOR /F "usebackq delims=" %%f IN (`Dir "%BoxIn%\%File1%" /B /A-D /S 2^>nul`) DO Call :PlusMove "%%f" "%BoxOut1%"

GoTo :Eof

:PlusMove
	If Not Exist %2 Md %2
	Move /Y %1 "%~2\" >nul 
GoTo :Eof

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


Последний раз редактировалось megaloman, 03-05-2017 в 23:22.

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:06, 03-05-2017 | #2



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

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


Ветеран


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

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


Цитата megaloman:
(внимание! при совпадении имён в разных папках останется один файл с этим именем) »
@#$%! Почему, ну, почему никогда не обращают на это внимание при озвучивании своих ТЗ?!

Отправлено: 00:15, 04-05-2017 | #3


Пользователь


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

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


megaloman, спасибо, но не хочет работать. Просто запускается и все закрывается.
Если это поможет, у меня стоить ХР-x64 SP2.

Отправлено: 05:38, 04-05-2017 | #4


Ветеран


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

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


registeruser1, не поможет. Чтобы помогло, Вы должны полностью и подробно описать свои действия: какой именно код брали — первый или второй, правили ли код по своим потребностям (например, меняли имена папок), в какой кодировке сохраняли пакетный файл, как исполняли пакетный файл и т.д.

Отправлено: 09:21, 04-05-2017 | #5



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - [решено] Поиск строки по части названия и вывод данных в ECHO Kainos Скриптовые языки администрирования Windows 14 16-04-2015 22:21
Любой язык - Поиск файлов по имени папки и сортировка Noscripter Скриптовые языки администрирования Windows 1 23-03-2015 00:43
Интернет - Сортировка файлов в проводнике по дате названия файла VbInt Microsoft Windows 7 7 15-11-2013 10:33
CMD/BAT - Выборка файлов по части названия скуби_ДУ Скриптовые языки администрирования Windows 7 03-08-2011 10:35




 
Переход