Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Переименование файлов в папке по заданному списку / 11 сообщений из 11, страница 1 из 1
12.11.2006, 21:10
    #34122331
LeCrunch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переименование файлов в папке по заданному списку
Есть большой перечень последовательно отсканированных документов в формате PDF, которым автоматически присваивались имена типа ММДДччммсс.pdf

Стоит задача переименовать их все в соответствии с подготовленным последовательным списком имён (например, реализованным как колонка в таблице Excel)

Как это осуществить?

(Нашел пример переименования, да второй макрос даёт ошибку '53' в цикле сохранения, а самое главное - непонятно, как обеспечить переименование именно по списку...)
...
Рейтинг: 0 / 0
13.11.2006, 08:51
    #34122714
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переименование файлов в папке по заданному списку
Написал 2 скрипта
1ый печатает список файлов в файл
Option Explicit
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Dim objFSO,objFilesFolder,objFile,objFilesList
Set objFSO=CreateObject("Scripting.FileSystemObject")
Set objFilesList=objFSO.OpenTextFile("fileslist.txt", 2 ,True)
Set objFilesFolder=objFSO.GetFolder("C:\Temp\Temporary")
For Each objFile in objFilesFolder.Files
    objFilesList.WriteLine objFile.Path
Next
objFilesList.Close
Set objFile=Nothing
Set objFilesList=Nothing
Set objFilesFolder=Nothing
Set objFSO=Nothing
WScript.Echo "Files list are ready!"
Здесь C:\Temp\Temporary папка где указанные находятся файлы для переименования
После подготовки файла, нужно в файле через таб прописать новые имена, например (содержимое файла fileslist.txt):
Код: plaintext
1.
2.
3.
C:\Temp\Temporary\AUTOEXEC. 001 	AUTOEXEC.TXT
C:\Temp\Temporary\AUTOEXEC.BAT	AUTOEXEC.CMD
C:\Temp\Temporary\autorun.inf	autorun.DOC
Затем запускаем второй скрипт, который берет строку, и переименовывает файлы по указанному имени:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Option Explicit
Dim objFSO,objFilesList,objFile
Dim strTemp,strTempArr
Set objFSO=CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists("fileslist.txt") Then
	Set objFilesList=objFSO.OpenTextFile("fileslist.txt", 1 )
	Do While Not objFilesList.AtEndOfStream
		strTemp=objFilesList.ReadLine
		strTempArr=Split(strTemp,vbTab)
		If UBound(strTempArr)> 0  Then
			Set objFile=objFSO.GetFile(strTempArr( 0 ))
			objFile.Name=strTempArr( 1 )
		End If
	Loop
	Set objFile=Nothing
	Set objFilesList=Nothing
End If
Set objFSO=Nothing
...
Рейтинг: 0 / 0
13.11.2006, 11:10
    #34123130
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переименование файлов в папке по заданному списку
Я бы сделал так:

Если в столбце [A] находятся новые имена
- начиная со строки 1
- отсортированные по возрастанию
- без пути
- с рассширением ".pdf", то:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Option Explicit
Sub test2()
    Dim x As String
    Dim fName As String
    Dim oldPath As String
    Dim newPath As String
    Dim i As Long
    
    oldPath = "C:\temp\"
    newPath = oldPath & "New\"
    On Error Resume Next
    x = GetAttr(newPath) And  0 
    If Err.Number <>  0  Then MkDir newPath
    fName = Dir(oldPath & "*.pdf")
    With ActiveSheet
        Do While Len(fName) >  0 
            i = i +  1 
            FileCopy oldPath & fName, newPath & .Cells(i,  1 )
            '.Cells(i, 2) = oldPath & fName 'проверка
            'Kill oldPath & fName 'удаление старых
            fName = Dir
        Loop
    End With
End Sub

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
13.11.2006, 11:21
    #34123179
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переименование файлов в папке по заданному списку
KL (XL)Я бы сделал так:

Если в столбце [A] находятся новые имена
- начиная со строки 1
- отсортированные по возрастанию
- без пути
- с рассширением ".pdf", то:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Option Explicit
Sub test2()
    Dim x As String
    Dim fName As String
    Dim oldPath As String
    Dim newPath As String
    Dim i As Long
    
    oldPath = "C:\temp\"
    newPath = oldPath & "New\"
    On Error Resume Next
    x = GetAttr(newPath) And  0 
    If Err.Number <>  0  Then MkDir newPath
    fName = Dir(oldPath & "*.pdf")
    With ActiveSheet
        Do While Len(fName) >  0 
            i = i +  1 
            FileCopy oldPath & fName, newPath & .Cells(i,  1 )
            '.Cells(i, 2) = oldPath & fName 'проверка
            'Kill oldPath & fName 'удаление старых
            fName = Dir
        Loop
    End With
End Sub

KL
[MVP - Microsoft Excel]
Показатель скорости надо проверить и универсальность
...
Рейтинг: 0 / 0
13.11.2006, 14:06
    #34123891
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переименование файлов в папке по заданному списку
orunbekПоказатель скорости надо проверить и универсальность

универсальность??? в каком смысле? на скорость не проверял, но не думаю, что разница большая.

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
14.11.2006, 22:40
    #34128681
LeCrunch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переименование файлов в папке по заданному списку
Спасибо, макрос помог - быстро и эффективно!
(а то я уже собрался составлять списки для батничка с rename)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
28.11.2013, 22:38
    #38482602
nujno
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переименование файлов в папке по заданному списку
Стоит похожая задача по переименованию файлов, только у них могут быть разные расширения. Посоветуйте плз как отредактировать макрос в #3390254, чтобы он по списку переименовывал только имя, а расширения файлов оставлял неизменным?
...
Рейтинг: 0 / 0
30.11.2013, 08:27
    #38484262
nujno
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переименование файлов в папке по заданному списку
Помогите, пожалуйста, с переименованием файлов с неизвестными расширениями
...
Рейтинг: 0 / 0
30.11.2013, 12:21
    #38484330
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переименование файлов в папке по заданному списку
Код: vbnet
1.
2.
3.
4.
5.
    fName = Dir(oldPath & "*.*")
    With ActiveSheet
        Do While Len(fName) > 0
            i = i + 1
            FileCopy oldPath & fName, newPath & .Cells(i, 1) & Mid$(fName,InStrRev(fName,"."))



вот так, вроде, не проверял.
недостаток - споткнется, если попадется файл без расширения
...
Рейтинг: 0 / 0
01.12.2013, 08:30
    #38484834
nujno
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переименование файлов в папке по заданному списку
Спасибо, работает. Понравилось, что неучитываются случайные скрытые файлы в папке, типа Thumbs.db
А как еще прикрутить проверку на соответствие "соглашения именования в NTFS" http://support.microsoft.com/kb/100108 т.е. в списке имен файлов не должно быть ? " / \ < > * | : , длина имени <253 символа и заодно останавливаться, если число файлов не будет соответствовать кол-ву строк в списке
...
Рейтинг: 0 / 0
01.12.2013, 12:22
    #38484892
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переименование файлов в папке по заданному списку
А следующий запрос будет - пакетное переименование по маске, поиск и изменение даты в названии файла и ведение лога?

Если вы хотите заказать какой-то софт для ваших нужд - обращайтесь в "Работу" или к другим фрилансерам. Либо делайте что-то и задавайте вопросы, если что-то не получается или непонятно.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Переименование файлов в папке по заданному списку / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]