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

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

Ответить
Настройки темы
CMD/BAT - [решено] Поместить каждый файл в одноименную папку.

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


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

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


Здравствуйте, помогите пожалуйста в решении следующей проблемы:
В папке находятся файлы
First.mp3
Second.mp3
Third.mp3
Fourth.mp3

Необходимо для каждого файла создать папку с именем как у файла и переместить каждый файл внутрь одноименной папки.
First\First.mp3
Second\Second.mp3
Third\Third.mp3
Fourth\Fourth.mp3

Отправлено: 00:41, 12-03-2016

 

Ветеран


Contributor


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

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


Если батник запускать в папке, где находятся файлы, то
Код: Выделить весь код
@echo off
FOR /F "usebackq delims=" %%d IN (`Dir "*.mp3" /b /A:-D 2^>nul`) DO (
	md  "%%~nd"
	move /Y "%%d" "%%~nd\"
)
Либо
Код: Выделить весь код
@echo off
FOR %%f IN (*.mp3) DO md "%%~nf" & move /Y "%%f" "%%~nf\"
Либо из командной строки, например, файл-менеджера FAR
FOR %f IN (*.mp3) DO md "%~nf" & move /Y "%f" "%~nf\"

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


Последний раз редактировалось megaloman, 12-03-2016 в 01:13.

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

Отправлено: 00:55, 12-03-2016 | #2



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

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


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


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

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


Спасибо большое. Второй вариант подошел.

Отправлено: 01:10, 12-03-2016 | #3


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


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

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


мне нужно тже самое но только у меня файлы имеют имена:
First_2021-10-22.ts
First_2020-01-18.mp4
Third_2016-02-02.flv
Third_2019-04-05.avi
и т.д.
нужно что бы все файлы с именем в начале "First" перенеслись в папку "First", тоесть куча файлов с разными датами в имени слились в одну папку, и расширения у них разные, но в основном видеоформат.

Отправлено: 20:43, 17-03-2022 | #4


Ветеран


Contributor


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

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


Код: Выделить весь код
@Echo Off
cls
 	Set "BoxIn=Z:\Box_In"

	FOR /F "usebackq delims=" %%f In (`2^>nul Dir /B /A:-D "%BoxIn%\*_20??-??-??.*"`) DO If Exist "%BoxIn%\%%f" (
			Set "Name=%%~nf"
			Call Echo %%Name%%|>nul 2>&1 FindStr/I /R /C:"^.*_20[0-9][0-9]-[0-1][0-9]-[0-3][0-9]$"&& (
				Call Set "Name=%%Name:~0,-11%%"
				Call 2>nul Md "%BoxIn%\%%Name%%"
				Call >nul Move /Y "%BoxIn%\%%Name%%_20??-??-??.*" "%BoxIn%\%%Name%%\"
	))
Pause
Exit /B
То же, чуть проще и быстрее, но менее надёжно
Код: Выделить весь код
@Echo Off
cls
 	Set "BoxIn=Z:\Box_In"

	FOR /F "usebackq delims=" %%f In (`2^>nul Dir /B /A:-D "%BoxIn%\*_20??-??-??.*"`) DO If Exist "%BoxIn%\%%f" (
			Set "Name=%%~nf"
			Call Set "Name=%%Name:~0,-11%%"
			Call 2>nul Md "%BoxIn%\%%Name%%"
			Call >nul Move /Y "%BoxIn%\%%Name%%_20??-??-??.*" "%BoxIn%\%%Name%%\"
	)
Pause
Exit /B

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


Последний раз редактировалось megaloman, 18-03-2022 в 09:40.


Отправлено: 22:26, 17-03-2022 | #5


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


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

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


Цитата megaloman:
megaloman »
че то не работает, ничего не происходит

Отправлено: 17:19, 19-03-2022 | #6


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


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

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


Цитата megaloman:
athlonix4@twitter, вы свой путь прописали вместо моего?
Set "BoxIn=Z:\Box_In"
Имя файла указали правильно? »
наверное немного недопонимание возникло, у меня как бы имен файлов разных около 1000, все они имеют разное колличество с датами, поэтому хотелось бы без указания.

Отправлено: 19:59, 19-03-2022 | #7


Ветеран


Contributor


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

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


athlonix4@twitter, Виноват, Вы должны указать путь папки, где содержатся эти файлы
Вот еще вариант:
Код: Выделить весь код
@Echo Off
cls
 	Set "BoxIn=Z:\Box_In"

	If Not "%~1"=="" Set "BoxIn=%~1"

	If "%BoxIn:~-1%"=="\" Set "BoxIn=%BoxIn:~0,-1%
	FOR /F "usebackq delims=" %%f In (`2^>nul Dir /B /A:-D "%BoxIn%\*_20??-??-??.*"`) DO If Exist "%BoxIn%\%%f" (
			Set "Name=%%~nf"
			Call Set "Name=%%Name:~0,-11%%"
			Call 2>nul Md "%BoxIn%\%%Name%%"
			Call >nul Move /Y "%BoxIn%\%%Name%%_20??-??-??.*" "%BoxIn%\%%Name%%\"
	)
Pause
Exit /B
Сохраните где-нибудь батник, на рабочем столе создайте на него иконку и в проводнике затаскивайте на нее обрабатываемую папку.
Можете просто запускать батник, но при этом путь к папке возьмется из батника.
Если поместить батник в обрабатываемую папку и запускать оттуда, то:
Set "BoxIn=%~dp0"

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


Отправлено: 21:02, 19-03-2022 | #8


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


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

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


Цитата megaloman:
megaloman »
спасибо огромное, все работает, если можно еще один нюанс, оказалось что есть файлы и с таким форматом имени:
Nikolay_2021-08-26_22-23-36_0001.ts
Nikolay_2022-01-21_21-23-25-proxy.ts
Nikolay_2022-01-21_21-23-25_deleted.ts
как быть с этим? редактировать батник под свой формат, я попытался, но что то пошло не так, или есть универсальный способ?

Отправлено: 21:38, 19-03-2022 | #9


Ветеран


Contributor


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

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


athlonix4@twitter, "Nikolay" - как я понимаю, имя произвольное. Оно может содержать знак "_" ? Кстати, этот вопрос относится и к предыдущим файлам.

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


Отправлено: 21:57, 19-03-2022 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Заархивировать каждый файл в отдельный архив Ins_16 Скриптовые языки администрирования Windows 25 18-11-2023 23:07
CMD/BAT - [решено] Как собрат файлы в папку по 20мб каждый? muqanna Скриптовые языки администрирования Windows 10 14-03-2012 07:39
Ошибка - Не удается поместить список сетевых устройств компьютера в папку fish99 Microsoft Windows 2000/XP 1 30-08-2010 12:22
[решено] Как упаковать папку в один файл и указать в ней исполняемый (exe) файл? SashaKl Хочу все знать 6 22-06-2009 01:11
куда поместить файл irik Вебмастеру 3 02-12-2003 19:10




 
Переход