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

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

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

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


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

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


Добрый день , Помогите пожалуйста с батником.
У меня есть целая куча файлов такаго образца P_434308546FM.JPG , P_434308546TM.JPG
Мне нужно чтобы создавалась папка с именем 4343085 и туда перемещались все файлы у которых в название присутствует 4343085.

Отправлено: 20:00, 19-03-2018

 

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


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

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


Цитата megaloman:
как фио отделяется от служебной инфы. Из чего состоит служебная инфа. Пример нескольких реальных названий пожалуйста »
Иванов Иван Иванович Заявление.doc
Иванов Иван Иванович Уведомление.doc

Отправлено: 17:10, 14-07-2023 | #11



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

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


Ветеран


Contributor


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

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


Если "Фамилия Имя Отчество Что то еще.doc" отделяются пробелами, то
Код: Выделить весь код
@Echo Off &rem Cls
	Set "BoxIn=Z:\Box_In"
	Set "Mask=* * * *.doc"
	Set "BoxOut=Z:\Box_In"

	If Not Exist "%BoxIn%\" (Echo !!! Folder "%BoxIn%" not found &Pause &Exit /B 2) 
	If Not Exist "%BoxOut%\" (Echo !!! Folder "%BoxOut%" not found &Pause &Exit /B 2) 

	For /F "usebackq tokens=1,2,3* delims= " %%i In (`2^>nul Dir /B /A:-D "%BoxIn%\%Mask%"`) Do (
		If Not Exist "%BoxOut%\%%i %%j %%k" Md "%BoxOut%\%%i %%j %%k"
		>nul Move "%BoxIn%\%%i %%j %%k %%l" "%BoxOut%\%%i %%j %%k\" 
	)
pause
Exit /B 0

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

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

Отправлено: 18:26, 14-07-2023 | #12


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


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

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


Цитата megaloman:
Если "Фамилия Имя Отчество Что то еще.doc" отделяются пробелами, то »
Сработало, огромный респект!

Отправлено: 18:37, 14-07-2023 | #13


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


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

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


Добрый день! прошу помощи!

Ситуация похожая с вышеописанными, но подработать под мои данные мозгов не хватает.

Программа выгружает файлы такого вида "текстовая часть""цифровая часть".pdf
-цифровая часть состоит из 8 символов (цифр), эта часть у всех файлов уникальна
-в текстовой части может быть что угодно, одинаковая текстовая часть встречается у нескольких файлов

задача чтобы положить в папку к этим файлам батник, запустить его и в этой же папке создались папки с именами "текстовых частей" файлов, а в них распределились файлы с соответствующими "текстовыми частями". то есть по несколько файлов в каждую папку.
но еще надо чтобы у раскиданных по папкам файлов из имени пропадала "текстовая часть" и оставалась только "цифровая часть"

Отправлено: 11:52, 11-10-2023 | #14


Ветеран


Contributor


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

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


Код: Выделить весь код
@Echo Off
cls
SetLocal EnableExtensions EnableDelayedExpansion
	Set "BoxIn=%~dp0"
rem	Set "BoxIn=Z:\Box_In"

	Set "Mask=.*[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\.*.*"

	Pushd "%BoxIn%" ||(Echo !!! Folder "%BoxIn%" not found &Pause &Exit /B 2) 
	For /F "usebackq delims=" %%f In (`2^>nul Dir /B /A:-D ^|FindStr /B /R /C:"%Mask%"`) Do (
		Set "Name=%%~nf"
		Set "FName=!Name:~-8!"
		Call Set "Name=%%Name:  !FName!=!FName!%%"
		Call Set "Name=%%Name: !FName!=!FName!%%"
		2>nul Md "!Name:~0,-8!"
		>nul Call Move /Y "%%f" "!Name:~0,-8!\!FName!%%~xf"
	)
	Popd
pause
Exit /B 0
перед цифровой частью не должно быть более 3 пробелов

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

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

Отправлено: 16:15, 11-10-2023 | #15


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


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

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


Это просто супер! работает!
но если честно между текстовой и числовой частью просто огромное количество пробелов, даже не знаю сколько
ограничение в 3 пробела это от винды? или можно как-то поправить

Все равно, огромнейшее СПАСИБО

Отправлено: 16:33, 11-10-2023 | #16


Ветеран


Contributor


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

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


Цитата Daswerone:
между текстовой и числовой частью просто огромное количество пробелов, даже не знаю сколько »
Сложность эти пробелы отрезать
Код: Выделить весь код
@Echo Off
cls
SetLocal EnableExtensions EnableDelayedExpansion
	Set "BoxIn=%~dp0"
rem	Set "BoxIn=Z:\Box_In"

	Set "Mask=.*[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\.*.*"

	Pushd "%BoxIn%" ||(Echo !!! Folder "%BoxIn%" not found &Pause &Exit /B 2) 
	For /F "usebackq delims=" %%f In (`2^>nul Dir /B /A:-D ^|FindStr /B /R /C:"%Mask%"`) Do (
		Set "Name=%%~nf"
		Call :Right "%%f" "!Name:~0,-8!" "!Name:~-8!%%~xf" 
	)
	Popd
pause
Exit /B 0

:Right
	Set "Txt=%~2"
	Set /A i=0
	:Begin
		Set /A i-=1
		If "!Txt:~%i%,1!"==" " GoTo :Begin
	Set /A i+=1
	If %i% Neq 0 Set "Txt=!Txt:~0,%i%!"
	2>nul Md "%Txt%"
	>nul Move /Y %1 "%Txt%\%~3"
Exit /B

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

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

Отправлено: 20:30, 11-10-2023 | #17


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


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

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


megaloman,
Вы просто волшебник, работает на УРА!!! думаю многим пригодится.
еще раз спасибо!

Отправлено: 21:21, 11-10-2023 | #18


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


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

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


Добрый день!
Подскажите пожалуйста написать батник следующего формата
Есть куча папок , со вложенными файлами pdf
Пример: Иванов Иван Иванович 1969 года (внутри скан с названием например 6)
Петров Петр Петрович (в папке скан с именем Петров) и т.д.
Папок более 1000+

Нужно:
Скопировать только Сканы (пдф) в определенное место , переименовав их как название папки
Заранее спасибо

Отправлено: 10:55, 08-12-2023 | #19


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Powershell v5
Код: Выделить весь код
$otkuda = 'C:\temp\from'
$kuda = 'C:\temp\to'

dir $otkuda -Recurse -File |% {
    cp $_.FullName "$kuda\$($_.Directory.Name)$($_.Extension)"
}
Скрипт копирует файлы.
Чтобы он переносил их, замените cp на mv.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 18:43, 08-12-2023 | #20



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Синтаксическая ошибка в имени файла, имени папки или метке тома Maestro Deno Microsoft Windows 7 8 05-03-2017 19:21
Доступ - Синтаксическая ошибка в имени файла, имени папки или метке тома Maestro Deno Microsoft Windows 7 1 05-03-2017 16:18
CMD/BAT - Удаление и создание папки с определенными правами на эту папку Mans2k Скриптовые языки администрирования Windows 1 29-01-2013 16:59
CMD/BAT - [решено] Перемещение файлов из одной папки в разные в зависимости от имени файла Sarge81 Скриптовые языки администрирования Windows 4 20-09-2011 04:20
CMD/BAT - [решено] Созд.*.txt по имени файла, с перемещением *.txt и файла в папку с именем файла. OSArev Скриптовые языки администрирования Windows 2 30-01-2011 11:58




 
Переход