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

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

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

Старожил


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

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


Привет всем! помогите со скриптом, есть n-ое кол-во файлов docx и txt файл (в нем список имен) нужен скрипт которые будет брать имена с txt файла и переименовывать docx файлы согласно списка в txt файле

Отправлено: 10:24, 07-12-2017

 

Ветеран


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

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


Образец списка? Есть ли в нём кириллица?

Отправлено: 10:40, 07-12-2017 | #2



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

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


Старожил


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

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


В нем кириллица
Пример:
Иванова Иван Иванович
Петров Петр Петрович
Сидоров Иван Артёмович
и т.д.

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


Ветеран


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

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


mcintosh55, тогда ещё вопросы — кодировка файла какая? Каким образом ограничены имена? Каким образом старое имя отделено от нового?

Отправлено: 11:09, 07-12-2017 | #4


Старожил


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

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


1) наверно не правильно задал вопрос, в текстовом файле список только новых имён нужно просто по порядку переименовать. Т.е. Берём первый файл заходим в txt файл берём из первой строчки ФИО и переименовываем Файл. Все имена в txt файле в столбике.
2) имена сохранены в с помощью блокнота кодировка стандартная windows но могу переделать под какую надо

Отправлено: 11:15, 07-12-2017 | #5


Аватара для Elven

Ветеран


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

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


как соотнести файлы с именем из списка?

Отправлено: 12:44, 07-12-2017 | #6


Старожил


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

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


Цитата Elven:
как соотнести файлы с именем из списка? »
есть файлы и есть список имен в txt файле в цикле берем первый файл и первое имя в txt файле и переименовываем (имена в txt файле записаны в столбик)

Отправлено: 13:29, 07-12-2017 | #7


Ветеран


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

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


Цитата mcintosh55:
просто по порядку переименовать. Т.е. Берём первый файл »
И тут возникает новый вопрос — по какому порядку? Ибо, скажем, порядок по возрастанию имён в том же Проводнике и в команде dir может частично отличаться.

Впрочем, вот, на 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
Благодарности: 8

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


Цитата Iska:
И тут возникает новый вопрос — по какому порядку? Ибо, скажем, порядок по возрастанию имён в том же Проводнике »
файлы иду в таком порядке:
Документ1
Документ2
Документ3
ДокументN

Отправлено: 14:09, 07-12-2017 | #9


Аватара для Elven

Ветеран


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

Профиль | Сайт | Отправить 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:
кодировка стандартная windows но могу переделать под какую надо »
файл с именами пользователей должен быть в 866

Отправлено: 14:48, 07-12-2017 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход