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

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

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

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


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

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


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

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

 

Ветеран


Contributor


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

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


Код: Выделить весь код
@Echo off

Set "BoxIn=Z:\Box_In"
Set "Mask=P_*.jpg"
Set /A NN=7

Set "BoxOut=Z:\Box_Out"

FOR /F "usebackq tokens=1,2 delims=_" %%i IN (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:-D`) DO Call :MoveNN "%%i" "%%j" "%BoxIn%" "%BoxOut%" %NN%
GoTo :Eof

:MoveNN
	If Not Exist "%~3\%~1_%~2" GoTo :Eof
	Set "NewDir=%~2"
	Call Set "NewDir1=%%NewDir:~0,%5%%"
	Set "NewDir=%~4\%NewDir1%"
	If Not Exist "%NewDir%" Md "%NewDir%" >nul 2>&1
	Move "%~3\%~1_%NewDir1%*%~x2" "%NewDir%\" >nul 2>&1
GoTo :Eof

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

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

Отправлено: 22:12, 19-03-2018 | #2



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

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


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


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

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


megaloman, Большое Вам спасибо. Все работает !!!

Отправлено: 10:11, 20-03-2018 | #3


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


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

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


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

Код: Выделить весь код
On Error Resume Next
if WScript.Arguments.Count = 0 then WScript.Quit
Arg = WScript.Arguments(0)
set FSO=CreateObject ("Scripting.FileSystemObject")
File = Arg
FileName = FSO.GetBaseName(File)
FileName_ext = FSO.GetFileName(File)
ParentFolder = Left(Arg, InStrRev(Arg, "\"))
NewFolderPath = ParentFolder & FileName
NewFilePath = NewFolderPath & "\" &  FileName_ext
If not FSO.folderexists (NewFolderPath) then
fso.createfolder (NewFolderPath)
end if
If Not FSO.FileExists(NewFilePath) Then
FSO.MoveFile File, NewFolderPath & "\"
Else
MsgBox "Файл " & FileName_ext & " Уже существует в папке " & NewFolderPath, vbOKOnly + vbExclamation, "Внимание!"
End If
Set FSO = Nothing
Wscript.Quit
Ну и для добавления в реестр например так
Код: Выделить весь код
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\Folder]
"MUIVerb"="Создать папку (файл)"
"Extended"=""

[HKEY_CLASSES_ROOT\*\shell\Folder\command]
@=hex(2):22,00,25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,00,5c,00,73,00,79,\
  00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,77,00,73,00,63,00,72,00,69,00,\
  70,00,74,00,2e,00,65,00,78,00,65,00,22,00,20,00,22,00,44,00,3a,00,5c,00,21,\
  04,3e,04,37,04,34,04,30,04,3d,04,38,04,35,04,20,00,3f,04,30,04,3f,04,3a,04,\
  38,04,2e,00,76,00,62,00,73,00,22,00,20,00,22,00,25,00,31,00,22,00,00,00
По умолчанию пункт скрыт, вызывается при нажатии шифта. Кому не нужен шифт убираем строчку "Extended"=""
Команда вызова "%windir%\system32\wscript.exe" "D:\Создание папки.vbs" "%1" путь соответственно править по своему

Последний раз редактировалось ripton07, 05-03-2022 в 01:54.

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

Отправлено: 01:48, 05-03-2022 | #4


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


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

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


Цитата ripton07:
Создание папки по имени файла и перемещение файла в эту папку »
Он все файлы раскидывает по разным папкам. А можно ли сделать чтоб все в одну папку?

Отправлено: 11:36, 29-04-2023 | #5


Старожил


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

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


Цитата denis19:
А можно ли сделать чтоб все в одну папку? »
замени
NewFolderPath = ParentFolder & FileName
на
NewFolderPath = ParentFolder & 111
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:45, 29-04-2023 | #6


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


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

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


Цитата shadowbat:
NewFolderPath = ParentFolder & 111 »
Во, спасибо, работает. Я так понял, 111 это имя новой папки, а своё никак поставить? Например то же New или Folder? С этими именами New и Folder не работает. Что нибудь похожее может?

Отправлено: 20:51, 29-04-2023 | #7


Старожил


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

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


не решение 1го поста но
решение для названия темы:
вариант просто для одного любого файла через драгндроп на батник
Код: Выделить весь код
@echo off
chcp 1251>nul

set File=%~1

for %%F in ("%File%") do (
if not exist "%%~dpnF" Md "%%~dpnF"
move "%File%" "%%~dpF%%~nF\%%~nxF">nul
)

exit /b
если повесить на ПКМ, то создаёт папки для каждого из выделенных файлов
Код: Выделить весь код
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\DirByFile]
"MUIVerb"="Создать папку по имени файла"
"Icon"="C:\\Windows\\System32\\shell32.dll,3"

[HKEY_CLASSES_ROOT\*\shell\DirByFile\command]
@="D:\\111\\Создать папку по имени файла.bat \"%1\""

Цитата denis19:
а своё никак поставить? Например то же New или Folder? С этими именами New и Folder не работает. »
NewFolderPath = ParentFolder & "своё"
NewFolderPath = ParentFolder & "New"
NewFolderPath = ParentFolder & "Folder"

Последний раз редактировалось shadowbat, 02-05-2023 в 04:57.

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

Отправлено: 04:31, 02-05-2023 | #8


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


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

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


Цитата shadowbat:
NewFolderPath = ParentFolder & "своё" »
Спасибо, работает.

Отправлено: 21:37, 03-05-2023 | #9


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


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

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


megaloman, Добрый день, может быть подскажете решение следующей задачи, в папке файлы называются "ФИО+служ.инфа.doc", как раскидать их по папкам с критерием только ФИО, то есть создается папка ФИО и туда все файлы сливаются с ФИО и разной служебной информацией?
Пробовал адаптировать скрипт из 2 поста, ничего не происходит после его запуска(

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



Компьютерный форум 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




 
Переход