Script Content Plugin
Select messages from
# through # FAQ
[/[Print]\]
Goto page Previous  1, 2, 3, 4, 5 ... 14, 15, 16  Next  :| |:
Total Commander -> Плагины Total Commander

#46:  Author: dis8848 PostPosted: Wed Apr 06, 2011 14:14
    —
Господа, может кто-то подскажет как реализовать следующую задачу.

Есть несколько файлов одного типа (например xls). В каждом из них есть ячейка "Абонентский номер" и ячейка с указанием значения, например, 0000000001 или 0000000002.

Требуется переименовать файлы следующим образом:
- если находит в содержимом значение 0000000001 - Пупкин Вася
- если находит в содержимом значение 0000000002 - Пупкина Маня и т.д.

Возможно задача нетривиальная, но пока не знаю как подступиться к ней, и возможно ли вообще?

Файлов много и их имена представляют собой бессмысленный набор символов.

#47:  Author: BatyaLocation: Москва, Россия PostPosted: Tue Apr 26, 2011 15:19
    —
dis8848
Я не понял.
Если значение берём из второй ячейки, то зачем ячейка "Абонентский номер"?
И откуда брать имена (Пупкин Вася, Пупкина Маня и т.п.)?

#48:  Author: dis8848 PostPosted: Mon May 02, 2011 11:26
    —
Возможно я корявенько написал, поясню по-иному.
Забудем о ячейках. Есть много файлов (отчеты оператора связи), каждый из которых в тексте содержит уникальный (и только один) номер SIM-карты. Сами файлы могут быть xls xml или html.
Файлы приходят с именами в виде бессмысленного набора символов. Соответствие номера SIM - ФИО заранее известно (пусть это будет таблица).
Нужно, чтобы искался текст в файле (тот самый номер SIM из заранее известного массива) и при нахождении соответствия - имя файла переименовывалось бы с абракадабры в значение, заданное в таблице.
Вот как-то так.

#49:  Author: BatyaLocation: Москва, Россия PostPosted: Tue May 03, 2011 10:03
    —
dis8848
Ясно.
Только файлы "xls xml или html" имеют разный формат.
1. В xls-файле номер SIM-карты хранится в какой-то определённой ячейке с заранее известным номером?
2. В xml-файле известен обрамляющий тэг для номера SIM-карты?
3. Как в html-файле определить положение номера SIM-карты?

#50:  Author: dis8848 PostPosted: Tue May 03, 2011 10:10
    —
В html номер SIM всегда находится в 61 строке
Code:
<br />Номер SIM-карты: 00000000000000000000</td>

то есть сам номер всегда занимает 20 символов на 61 строке начиная с 24 знака.
По остальным - сейчас перед глазами нету образцов, но да - по xls там всегда тоже строго определенная ячейка.
--------------------------------------------------------
сейчас уточнил, в случае с xls это всегда ячейка с именем R5C3.

#51:  Author: BatyaLocation: Москва, Россия PostPosted: Wed May 04, 2011 15:21
    —
dis8848
Т.к. для xml ты не ответил, пока так:
Code:
'====================================================
' Колонка Result возвращает "Номер SIM-карты"
'====================================================

Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
Const ForReading  = 1
Const ReadingLine = 61

On Error Resume Next
Select Case LCase(FSO.GetExtensionName(filename))
  Case "html"
    content = FromHtml(filename)
  Case "xml"
    content = FromXml (filename)
  Case "xls"
    content = FromXls (filename)
  Case Else
    content = ""
End Select
If Err.Number <> 0 Then content = ""
On Error GoTo 0

Set FSO = Nothing

Function FromHtml(pFile)
  Dim i
  FromHtml = ""
  With FSO.OpenTextFile(pFile, ForReading)
    i = 1
    Do While Not .AtEndOfStream
      If i < ReadingLine Then
        .SkipLine
        i = i + 1
      Else
        FromHtml = Mid(.ReadLine, 24, 20)
        Exit Do
      End If
    Loop
    .Close
  End With
End Function

Function FromXml(pFile)
  FromXml = ""
  'Задача пока не формализована
'  With FSO.OpenTextFile(pFile, ForReading)
'    Do While Not .AtEndOfStream
'      .SkipLine
'    Loop
'    .Close
'  End With
End Function

Function FromXls(pFile)
  FromXls = ""
  With CreateObject("Excel.Application")
    .Workbooks.Open pFile, null, True
    On Error Resume Next
    FromXls = .Cells(5,3).Value
    On Error GoTo 0
    .Quit
  End With
End Function

Поскольку ты сам запостил вопрос в этой теме, я надеюсь, что ты знаешь, что с этим делать Wink

#52:  Author: dis8848 PostPosted: Thu May 05, 2011 11:29
    —
Batya wrote:
...я надеюсь, что ты знаешь, что с этим делать Wink
спасибо большое! буду пробовать.

Добавлено спустя 2 часа 17 минут 4 секунды:

Попробовал с html, всё хорошо, немного только поправил значения:
Code:
FromHtml = Mid(.ReadLine, 34, 20)

Еще раз большое спасибо!

#53:  Author: BatyaLocation: Москва, Россия PostPosted: Thu May 05, 2011 14:47
    —
dis8848 wrote:
немного только поправил значения

Ну, как ты писал выше, так я и сделал Smile

Так что xml-то?

#54:  Author: dis8848 PostPosted: Wed May 18, 2011 07:50
    —
Batya wrote:
dis8848 wrote:
немного только поправил значения

Ну, как ты писал выше, так я и сделал Smile

Так что xml-то?
решили остановиться на html

правда основная задача осталась не решена - подстановка вместо номеров SIM имён пользователей.

#55:  Author: BatyaLocation: Москва, Россия PostPosted: Wed May 18, 2011 10:44
    —
dis8848 wrote:
правда основная задача осталась не решена - подстановка вместо номеров SIM имён пользователей.

Ну, так ты ж не сказал точно, откуда брать ФИО? (Расположение файла, формат, номер начальной строки, позиция, номера ячеек, столбцов, строк и т.п.)

#56:  Author: Andrey_ALocation: Сочи PostPosted: Sun Jul 24, 2011 20:10
    —
Подскажите почему не срабатывает код и выдаёт ошибку: "требуется объект"
Code:
Dim FSO, objFolder, objShellApp, objItem
Set FSO = CreateObject("Scripting.FileSystemObject")
Set objShellApp = CreateObject("Shell.Application")
Set objFolder = CreateObject("Shell.Application").NameSpace(FSO.GetParentFolderName(FileName))
Set objItem = objFolder.ParseName(FSO.GetFileName(FileName))
Content = objFolder.GetDetailsOf(objItem, 25)

хотя если вставить начало FileName = "c:\TC Image\TOTALCMD.EXE"
то работает... может что-то не хватает

#57:  Author: BatyaLocation: Москва, Россия PostPosted: Mon Jul 25, 2011 09:40
    —
Andrey_A
В script.ini должно быть:
Code:
LongName=1

#58:  Author: Andrey_ALocation: Сочи PostPosted: Mon Jul 25, 2011 09:55
    —
Спасибо, заработало!

#59:  Author: dis8848 PostPosted: Wed Sep 21, 2011 14:29
    —
Batya wrote:
Ну, так ты ж не сказал точно, откуда брать ФИО? (Расположение файла, формат, номер начальной строки, позиция, номера ячеек, столбцов, строк и т.п.)
Ф.И.О. должно браться из таблички, наподобие вот такой: http://www.mediafire.com/?hy0de9i5fjt505p
расположение файла можно пока условно принять за D:\work\
Если это хоть как-то облегчит задачу:

Остановились на html, другие не будем пока рассматривать.

#60:  Author: BatyaLocation: Москва, Россия PostPosted: Tue Oct 04, 2011 11:06
    —
dis8848
Я опять ничего не понял.
Если ты хочешь остановиться "на html, другие не будем пока рассматривать", то зачем привёл пример xls-файла?
Ты хочешь переименовывать файлы по их содержимому, или информация для переименования должна браться из какого-то стороннего файла?



Total Commander -> Плагины Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page Previous  1, 2, 3, 4, 5 ... 14, 15, 16  Next  :| |:
Page 4 of 16

Powered by phpBB © 2001, 2005 phpBB Group