|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Переместить файлы в папки с их именем. |
|
CMD/BAT - [решено] Переместить файлы в папки с их именем.
|
Новый участник Сообщения: 2 |
Здравствуйте,
Прошу помочь с Батником ил скриптом для следующей задачи. От предыдущего преподавателя курсов ИЗО мне достался компьютер, где большое количество изображений работ учеников. Свалено все это в несколько папок. Задача избежать ручного монотонного перемещения графических файлов (JPG) по папкам с фамилией и инициалами ученика. Большая часть файлов имеет следующее имя: Фамилия(пробел)инициалы.через.точку(пробел)дата в формате 01.01.18. То есть (Иванов А.Б. 02.02.2018.JPG), (Иванов А.Б. 05.03.2018.JPG), (Иванов В.Г. 31.12.2017.JPG), (Иванов В.Г. 06.05.2018.JPG) и тд. Задача стоит в том что бы разложить все графические файлы допустим ученика Иванова А.Б. в папку "ИвановАБ", то есть все файлы у которых в названии есть "Иванов А.Б." (Иванов А.Б. 02.02.2018.JPG, Иванов А.Б. 05.03.2018.JPG) попадают в создаваемую сценарием папку "ИвановАБ". И соответственно файлы у которых в имени есть Иванов В.Г. (Иванов В.Г. 31.12.2017.JPG, Иванов В.Г. 06.05.2018.JPG) попадают попадают в создаваемую сценарием папку "ИвановВГ" и тд, со всеми учениками. Спасибо. |
|
Отправлено: 16:18, 11-10-2018 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Цитата peequ84:
Вот вариант для имен "Фамилия И.О. дд.мм.гггг.расширение". Здесь сделан контроль на то, что в нужной позиции содержится номер года. Возможно, это излишне жестко
@Echo Off cls Call :Folders "Z:\Box_In" "* ?.?. ??.??.????.jpg" "Z:\Box_Out" Call :Folders "Z:\Soft_In" "* ?.?. ??.??.????.jpg" "Z:\Box_Out" pause GoTo :Eof :Folders FOR /F "usebackq delims=" %%f IN (`2^>nul Dir /B /O:-D /S "%~1\%~2"`) DO Call :MoveName "%%f" %1 %3 Exit /B :MoveName FOR /F "tokens=1,2,3,6 delims=. " %%i IN ("%~nx1") DO ( If 12000 LEQ 1%%l If 1%%l LEQ 12099 ( If Not Exist "%~3\%%i%%j%%k" MD "%~3\%%i%%j%%k" Echo Move %1 "%~3\%%i%%j%%k\" Move %1 "%~3\%%i%%j%%k\" >nul ) ) Exit /B Если ориентироваться только на "Фамилия И.О.*.расширение"
@Echo Off cls Call :Folders "Z:\Box_In" "* ?.?.*.jpg" "Z:\Box_Out" Call :Folders "Z:\Soft_In" "* ?.?.*.jpg" "Z:\Box_Out" pause GoTo :Eof :Folders FOR /F "usebackq delims=" %%f IN (`2^>nul Dir /B /O:-D /S "%~1\%~2"`) DO Call :MoveName "%%f" %1 %3 Exit /B :MoveName FOR /F "tokens=1,2,3 delims=. " %%i IN ("%~nx1") DO ( If Not Exist "%~3\%%i%%j%%k" MD "%~3\%%i%%j%%k" Echo Move %1 "%~3\%%i%%j%%k\" Move %1 "%~3\%%i%%j%%k\" >nul ) Exit /B Цитата peequ84:
|
||
------- Последний раз редактировалось megaloman, 12-10-2018 в 09:39. Отправлено: 21:40, 11-10-2018 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать На WSH:
Скрытый текст
Option Explicit Dim strSourceFolder Dim objFSO Dim objFile Dim strDestFolder If WScript.Arguments.Count = 1 Then strSourceFolder = WScript.Arguments.Item(0) Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") If objFSO.FolderExists(strSourceFolder) Then With WScript.CreateObject("VBScript.RegExp") .Pattern = "^(\S+) (\S)\.(\S)\. \d{2}\.\d{2}\.\d{4}\.(?:jpg|jpeg)$" .IgnoreCase = True For Each objFile In objFSO.GetFolder(strSourceFolder).Files If .Test(objFile.Name) Then With .Execute(objFile.Name).Item(0).Submatches strDestFolder = objFSO.BuildPath(strSourceFolder, .Item(0) & .Item(1) & .Item(2)) If Not objFSO.FolderExists(strDestFolder) Then objFSO.CreateFolder strDestFolder End If objFile.Move strDestFolder & "\" End With End If Next End With Else WScript.Echo "Can't find source folder [" & strSourceFolder & "]." WScript.Quit 2 End If Set objFSO = Nothing Else WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ <Source folder>" WScript.Quit 1 End If WScript.Quit 0 Путь к целевому каталогу задаётся параметром скрипта (также можно просто перетащить папку на скрипт в Проводнике). |
Последний раз редактировалось Iska, 12-10-2018 в 21:27. Причина: Поправлена неточность в шаблоне Отправлено: 21:58, 11-10-2018 | #3 |
Новый участник Сообщения: 2
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
то что надо изменить в этом сценарии? |
|
Отправлено: 10:05, 12-10-2018 | #4 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Цитата peequ84:
|
||
------- Отправлено: 10:39, 12-10-2018 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать megaloman, у Вас тоже каталоги создаются либо без последней точки, либо с двумя
![]() |
Отправлено: 21:34, 12-10-2018 | #6 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Iska, Вы натыкали носом в мою невнимательность: конечно же, без точки на конце. Где-то уже об это спотыкался
|
------- Отправлено: 10:07, 13-10-2018 | #7 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать можно взять имя (все имя папки имеется ввиду) в скобочки, если эстетика ТС устроит, а иначе с точкой в конце только в скрытых и открываться не будет, а также и удаляться обычными средствами, т.е. толку 0
|
Отправлено: 11:56, 13-10-2018 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата alpap:
Скрытый текст
![]() P.S. Под Far Manager'ом поведение нормальное, так что даже никогда не обращал внимания, что Проводник такое не «переваривает». |
|
Отправлено: 20:20, 13-10-2018 | #9 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Переместить все файлы JPG и TXT, заканчивающиеся на цифры 0,1,2...9 в номерные папки | use809 | Скриптовые языки администрирования Windows | 2 | 21-11-2015 04:03 | |
Разное - [решено] Не запускаются файлы с именем setup.exe (именно с именем) | Temix | Microsoft Windows 8 и 8.1 | 13 | 12-12-2014 22:05 | |
CMD/BAT - [решено] Переместить все файлы и папки | pzh2393 | Скриптовые языки администрирования Windows | 7 | 11-04-2013 11:52 | |
VBS/WSH/JS - [решено] Надо скопировать файлы из одной папки в другую, но только если их нет в третьей | rromms | Скриптовые языки администрирования Windows | 3 | 11-09-2011 21:42 | |
CMD/BAT - [решено] Найти папкИ и переместить их по указанному пути... | djvall | Скриптовые языки администрирования Windows | 1 | 02-02-2011 08:58 |
|