Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Копирование файла и переименование согласно списка из exel (http://forum.oszone.net/showthread.php?t=315411)

TPOJIb_55 31-05-2016 13:25 2639101

Копирование файла и переименование согласно списка из exel
 
Стоит задача:

Имеем 2 файла
картинка.jpg
файл.xls - в файле имеем список id формата 546738

Необходимо копировать файл картинка.jpg и переименовывать его p546738-0mw.jpg то количество раз сколько id в фале файл.xls

megaloman 31-05-2016 14:37 2639119

TPOJIb_55, куда копировать и почему надо переименовывать, не проще ли копировать с новым именем? Как расположен список ID В XLS файле. ИМХО, ваш вопрос не совсем в тему cmd/bat. Почему бы не написать в файл.xls макрос, который выполнит эту задачу?

TPOJIb_55 31-05-2016 15:38 2639143

megaloman, Файлы в одной папке и необходимо в эту же папку сложить тоже количество файлов что и id в файле. Файлы могут меняться, и в содержание "файл.xls" меняется список id. С макросами вообще не дружу, поэтому не знаю как это реализовать и отработает ли он если необходимо создать 1000 файлов по списку. В файле список в колонку.

megaloman 31-05-2016 21:21 2639241

Вложений: 1
Вот vbs-скрипт с решением Вашей задачи.
Код:

Book = "файл.xls"
NFile = "картинка.jpg"                              ' Имя размножаемого файла
NewPref = "p"                                      ' Префикс нового имени
NewSuff = "-0mw"                                    ' Суффикс нового имени
   
First = "A1"                                        ' Верхняя клетка с данными в столбце

Where=CreateObject("WScript.Shell").CurrentDirectory+"\"
PBook=Where+Book

' MsgBox PBook

Set XL = CreateObject("Excel.Application")

XL.Visible = False    ' True
XL.Workbooks.Open PBook
   
PName = Where + NFile

Set FSO = CreateObject("Scripting.FileSystemObject")
   
If FSO.FileExists(PName) Then
    Ext = FSO.GetExtensionName(PName)

    i = 0
    With XL.Range(First)
        Do
            RR = CStr(.Offset(i, 0))
            If Len(Trim(CStr(.Offset(i, 0)))) = 0 Then Exit Do
            i = i + 1
            aaa = FSO.CopyFile(PName, Where + "\" + NewPref + RR + NewSuff + "." + Ext, True)
        Loop
        MsgBox "Файл" + vbCrLf + PName + vbCrLf + "скопирован " + CStr(i) + " раз"
    End With
Else
    MsgBox "Файл" + vbCrLf + PName + vbCrLf + "не найден"
End If

XL.Quit

Скрипт должен быть расположен в той же папке, что картинка.jpg и файл.xls. В тексте скрипта настройте реальные имена файлов и адрес ячейки, с которой начинаются данные в столбце файл.xls.

Во вложенном файле присутствует таблица с примером использования макроса. Открываете таблицу, Меню - Сервис - Макросы - Макрос назвал rrr, изменяете его: пИшите реальные имена файлов и указываете начальную клетку. Сохраняете, запускаете на выполнение.

TPOJIb_55 01-06-2016 09:28 2639326

megaloman, Огромное вам спасибо! Все работает как часы!


Время: 12:37.

Время: 12:37.
© OSzone.net 2001-