|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] переименования файлов |
|
CMD/BAT - [решено] переименования файлов
|
Старожил Сообщения: 300 |
Профиль | Отправить PM | Цитировать Привет всем! помогите со скриптом, есть n-ое кол-во файлов docx и txt файл (в нем список имен) нужен скрипт которые будет брать имена с txt файла и переименовывать docx файлы согласно списка в txt файле
|
|
Отправлено: 10:24, 07-12-2017 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Образец списка? Есть ли в нём кириллица?
|
Отправлено: 10:40, 07-12-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 300
|
Профиль | Отправить PM | Цитировать В нем кириллица
Пример: Иванова Иван Иванович Петров Петр Петрович Сидоров Иван Артёмович и т.д. |
Отправлено: 11:02, 07-12-2017 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать mcintosh55, тогда ещё вопросы — кодировка файла какая? Каким образом ограничены имена? Каким образом старое имя отделено от нового?
|
Отправлено: 11:09, 07-12-2017 | #4 |
Старожил Сообщения: 300
|
Профиль | Отправить PM | Цитировать 1) наверно не правильно задал вопрос, в текстовом файле список только новых имён нужно просто по порядку переименовать. Т.е. Берём первый файл заходим в txt файл берём из первой строчки ФИО и переименовываем Файл. Все имена в txt файле в столбике.
2) имена сохранены в с помощью блокнота кодировка стандартная windows но могу переделать под какую надо |
|
Отправлено: 11:15, 07-12-2017 | #5 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать как соотнести файлы с именем из списка?
|
Отправлено: 12:44, 07-12-2017 | #6 |
Старожил Сообщения: 300
|
Профиль | Отправить PM | Цитировать Цитата Elven:
|
|
Отправлено: 13:29, 07-12-2017 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата mcintosh55:
Впрочем, вот, на WSH: Скрытый текст
Option Explicit Dim strSourceFile Dim strSourceFolder Dim objFile Dim objDictionary Dim arrOldNames, arrNewNames Dim i If WScript.Arguments.Count = 1 Then With WScript.CreateObject("Scripting.FileSystemObject") strSourceFile = .GetAbsolutePathName(WScript.Arguments.Item(0)) strSourceFolder = .GetParentFolderName(strSourceFile) If .FileExists(strSourceFile) Then Set objDictionary = WScript.CreateObject("Scripting.Dictionary") For Each objFile In .GetFolder(strSourceFolder).Files If StrComp(.GetExtensionName(objFile.Name), "docx", vbTextCompare) = 0 Then objDictionary.Add objFile.Name, "" End If Next arrOldNames = objDictionary.Keys With .OpenTextFile(strSourceFile) arrNewNames = Split(.ReadAll(), vbCrLf) .Close End With For i = LBound(arrOldNames) To UBound(arrOldNames) If i <= UBound(arrNewNames) Then If Len(Trim(arrNewNames(i))) > 0 Then .GetFile(.BuildPath(strSourceFolder, arrOldNames(i))).Name = Trim(arrNewNames(i)) End If End If Next objDictionary.RemoveAll Set objDictionary = Nothing Else WScript.Echo "Can't find source file [" & strSourceFile & "]." WScript.Quit 2 End If End With Else WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptFullName & """ <Source file>" WScript.Quit 1 End If WScript.Quit 0 Путь к файлу с новыми именами указывается аргументом скрипта, файлы *.docx будут искаться в том же каталоге, где находится файл с новыми именами (хоть это и категорически неправильный подход). Никаких проверок на совпадение имён не делалось. |
|
Отправлено: 13:50, 07-12-2017 | #8 |
Старожил Сообщения: 300
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Документ1 Документ2 Документ3 ДокументN |
|
Отправлено: 14:09, 07-12-2017 | #9 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать я может неправильно понял, но вроде как имеют место два файла: в одном файле имена пользователей, в другом - имена файлов, при этом каждая строка с именем пользователя в первом документе соответствует имени файла во втором документе.
т.е.
users.txt Иван Иваныч Иван Степаныч Иван Кузьмич files.txt 1.docx 2.docx 3.docx переименование т.о. будет таким: 1.docx -> Иван Иваныч.docx 2.docx -> Иван Степаныч.docx 3.docx -> Иван Кузьмич.docx Если я прав то на cmd получается как-то так @echo off SETLOCAL ENABLEDELAYEDEXPANSION set af=users.txt set bf=files.txt for /f "tokens=3" %%j in ('find /c /v "" %af%') do ( for /l %%i in (1,1,%%j) do ( set an=0 for /f "delims=" %%a in (%af%) do ( set /a an=!an!+1 if !an!==%%i ( set bn=0 for /f "delims=" %%b in (%bf%) do ( set /a bn=!bn!+1 if !bn!==%%i ( rename "%%b" "%%a.docx" )))))) Цитата mcintosh55:
|
|
Отправлено: 14:48, 07-12-2017 | #10 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Батник для переименования файлов | Школьник 5 | Скриптовые языки администрирования Windows | 21 | 30-11-2019 21:58 | |
VBS/WSH/JS - VBS Скрипт переименования файлов | wwtf | Скриптовые языки администрирования Windows | 6 | 26-04-2017 14:00 | |
CMD/BAT - [решено] батник для переименования файлов | Pumpik | Скриптовые языки администрирования Windows | 5 | 01-02-2014 20:12 | |
CMD/BAT - [решено] не работает счетчик переименования файлов | Xeruvim4ik | Скриптовые языки администрирования Windows | 13 | 15-04-2013 21:57 | |
Скрипт автоматического переименования файлов mp3 | Ламер | Программирование в *nix | 2 | 02-03-2011 19:59 |
|