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

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

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

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


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

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


Здравствуйте.
Помогите написать батник для перемещения файлов в папки, которым присваивается имя, соответствующее первым 10 символам имен файлов.

В директории масса файлов, имя которых начинается с дат в одинаковом формате вида 2021-01-01-??????????.???
Необходим батник, который будет создавать папки, имена которых соответствуют первым 10 символам имен файлов (как 2021-01-01), и перемещать в эти папки соответствующие файлы.

Отправлено: 22:03, 10-02-2021

 

Ветеран


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

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


Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq delims=" %%i in (
	`2^>nul dir /b /a:-d "*.*" ^| findstr.exe /r /c:"^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]-.*\..*$"`
) do (
	set sName=%%~nxi
	set sDate=!sName:~0,10!
	2>nul md "!sDate!"
	>nul move "%%~fi" ".\!sDate!\"
)

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

Отправлено: 22:57, 10-02-2021 | #2



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

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


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


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

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


Iska, спасибо! С фильтром через регулярные выражения работает отлично.

Отправлено: 01:07, 11-02-2021 | #3


Ветеран


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

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


Код: Выделить весь код
@echo off
for /f "tokens=1-3* delims=-" %%a in ('dir /a-d/b "????-??-??-*"') do (
  if not exist "%%a-%%b-%%c" md "%%a-%%b-%%c"
  >nul move "%%a-%%b-%%c-%%d" "%%a-%%b-%%c"
)
pause
Это сообщение посчитали полезным следующие участники:

Отправлено: 01:16, 11-02-2021 | #4


Ветеран


Contributor


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

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


Можно соединить идею Iska и alpap, а в Move написать перемещение не по файлу, а группой за дату (ИМХО, сработает быстрее)
Код: Выделить весь код
@Echo Off
cls
	Set "BoxIn=Z:\Box_In"
	For /f "usebackq tokens=1-3* delims=-" %%i In (
		`2^>nul Dir /A:-D /B "%BoxIn%\????-??-??-*.*"^| findstr.exe /B /R /C:"^[0-9][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9]-"`) Do (
		If Exist "%BoxIn%\%%i-%%j-%%k-%%l" (
			2>nul Md "%BoxIn%\%%i-%%j-%%k"
			>NUL Move /Y "%BoxIn%\%%i-%%j-%%k-*.*" "%BoxIn%\%%i-%%j-%%k\"
		)
	)
Pause
Exit /B 0
Хотя, ИМХО, от findstr (выделено красным) можно и вовсе отказаться с незначительным ухудшением контроля имен, но с меньшим временем выполнения, хотя всё это для разовой задачи несущественно, раз она решена.

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

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

Отправлено: 08:56, 11-02-2021 | #5


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


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

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


alpap, megaloman, спасибо за интересные варианты!

Отправлено: 16:26, 13-02-2021 | #6



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Создание папки из части имени файла и перемещение в нее файлов содержащих эту часть artbiokron@vk Скриптовые языки администрирования Windows 10 17-03-2020 10:32
CMD/BAT - Копирование файлов по списку соответствия логинов/имен в домашние папки пользователей evgenyat Скриптовые языки администрирования Windows 17 23-01-2020 16:15
CMD/BAT - Перемещение файлов по маске с созданием папки по дате в названии файла AndreH Скриптовые языки администрирования Windows 5 08-08-2018 09:14
CMD/BAT - [решено] Создание папок на основе имен файлов и перемещение файлов в эти папки mezzin Скриптовые языки администрирования Windows 4 10-12-2016 21:11
CMD/BAT - [решено] Переименование части имен файлов use809 Скриптовые языки администрирования Windows 10 12-10-2015 14:15




 
Переход