View previous topic :: View next topic |
Author |
Message |
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Dec 24, 2014 21:42 Post subject: |
|
|
KatMuse
Я исхожу из поставленной задачи: KatMuse wrote: | Создать текстовый файл на основании двух переданных параметров - путь и имя файла.
То есть mybat.bat "C:\temp" "test.jpg" и получаем файл с именем "! test.txt" в каталоге temp. | Разве она не соответствует той, что по ссылке? Там помимо notepad ещё несколько вариантов. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Last edited by Flasher on Wed Dec 24, 2014 21:53; edited 1 time in total |
|
Back to top |
|
|
KatMuse
Joined: 26 Jul 2014 Posts: 82
|
(Separately) Posted: Wed Dec 24, 2014 21:48 Post subject: |
|
|
Вот частичное решение, а как добавить информацию о файле я не понимаю...
Quote: | Set folder="%~1\! %~n2.txt"
Set FName="" "%~1\! %~n2.txt"
@type nul>%folder%& start %FName% |
Добавлено спустя 2 минуты:
Flasher
прошу прощения, это моя не доработка... Я имел ввиду другой контекст, с учётом первой задачи. Безусловно речь шла о заместителе для конкретного файла. Извините. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Dec 24, 2014 21:58 Post subject: |
|
|
Ясно. А описание к файлу должно быть в каком-то в определённом формате? А то можно было бы вытащить чуть больше. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
KatMuse
Joined: 26 Jul 2014 Posts: 82
|
(Separately) Posted: Wed Dec 24, 2014 22:27 Post subject: |
|
|
Flasher
Спасибо за ответ! Мне лишь бы информативно, а формат описания не играет большой роли, другое дело, что я могу не понять некоторые элементы, так как опыт не большой, но если ещё прокомментируете, то было просто замечательно. Учиться я люблю
Я собственно в описание ввожу ключевые слова, чтобы потом можно было искать нужные файлы (не хочу зависеть от каталогизаторов), но очень бы хотелось добавить туда ещё и полезную информацию. А ещё лучше информация плюс хэш, но это уже понеслись мои мечты
Добавлено спустя 27 минут:
Частичное решение не работает для всех файлов, а только для тех, у имени которых нет пробела. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Dec 24, 2014 23:05 Post subject: |
|
|
Ммм. С этим не сразу (хотя смотря какой вариант реализации выбрать). _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
KatMuse
Joined: 26 Jul 2014 Posts: 82
|
(Separately) Posted: Wed Dec 24, 2014 23:37 Post subject: |
|
|
Flasher, спасибо за ответ!
Quote: | С этим не сразу (хотя смотря какой вариант реализации выбрать) |
Ого! То есть это реально? Ничего себе, а я думал, что это нереально. Просто я очень хэши люблю, так как они сразу показывают, что было с файлом и это он повреждён или в системе проблема. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Dec 25, 2014 00:03 Post subject: |
|
|
KatMuse
Но всё же хэши желательно чем-то (например, инструментом ТС) проверять на автомате, а тут получается просто чтение информации. Разве это удобно?
Прежде покажу vbs-вариант без хэша (а после выяснения надобности выберем вариант):
Code: | '=========================================================
' Создать текстовые инфо-файлы к выбранным
' Параметры: %WL "<папка сохранения>" <открывать файлы: 1>
' Пример: %WL "%T" 1
'=========================================================
With WScript.Arguments
C = .Count : If C = 0 Then WScript.Quit
Set FSO = CreateObject("Scripting.FileSystemObject")
Set SHA = CreateObject("Shell.Application")
Set List = FSO.OpenTextFile(.Item(0),,,-1)
Path = FSO.BuildPath(.Item(1), "\") : If C = 3 Then Open = .Item(2)
End With
Do Until List.AtEndOfStream
F = List.ReadLine
If F <> "" And FSO.FileExists(F) And LCase(FSO.GetExtensionName(F)) <> "txt" Then
With FSO.GetFile(F)
Set Folder = SHA.NameSpace(.ParentFolder.Path)
All = "" : Set File = Folder.ParseName(.Name)
End With
For i = 0 to 288
Value = Folder.GetDetailsOf(File, i) : If Value <> "" Then _
All = All & vbNewLine & Folder.GetDetailsOf(0, i) & ": " & Value
Next : NF = Path & FSO.GetBaseName(F) & ".txt" : If Not FSO.FileExists(NF) Then _
FSO.OpenTextFile(NF, 2, True, -1).Write Mid(All, 3) : If Open = 1 Then SHA.Open(NF)
End If
Loop |
_________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Last edited by Flasher on Fri Dec 26, 2014 10:40; edited 1 time in total |
|
Back to top |
|
|
KatMuse
Joined: 26 Jul 2014 Posts: 82
|
(Separately) Posted: Thu Dec 25, 2014 00:20 Post subject: |
|
|
Это изумительно, великолепно, просто невероятно!!!
Это даже больше того о чём я мечтал!!!
Спасибо!!!
Вы правы это не удобно... я всех хешей не помню ведь
Flasher, ещё раз спасибо! |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Dec 25, 2014 00:25 Post subject: |
|
|
Вот это реакция! Пожалуйста!
Я там ещё проверку добавлял на существование инфо-файла, чтобы не спотыкалось на ошибке, если что. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
KatMuse
Joined: 26 Jul 2014 Posts: 82
|
(Separately) Posted: Thu Dec 25, 2014 00:55 Post subject: |
|
|
Спасибо Вам огромное, Flasher! |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Dec 26, 2014 17:57 Post subject: |
|
|
KatMuse
Я тут подумал, надо бы от лишнего мусора (дублирование и отрицания) избавиться и выровнять
значения в колонке для моноширинного шрифта (Courier New, Lucida Console и т. п.) в текстовом редакторе:
CreateInfoTxtForSelectedFiles.vbs Code: | '••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
' Создать текстовые инфо-файлы к выбранным
' Параметры: %WL "<папка сохранения>" <открывать файлы: 1>
' Пример: %WL "%T" 1
' Автор - Flasher ©
'••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
With WScript.Arguments
C = .Count : If C = 0 Then WScript.Quit
Set FSO = CreateObject("Scripting.FileSystemObject")
Set List = FSO.OpenTextFile(.Item(0),,,-1)
Path = FSO.BuildPath(.Item(1), "\") : If C = 3 Then Open = .Item(2)
End With : Set ShA = CreateObject("Shell.Application")
Set Dict = CreateObject("Scripting.Dictionary")
Do Until List.AtEndOfStream
F = List.ReadLine
If F <> "" And FSO.FileExists(F) And LCase(FSO.GetExtensionName(F)) <> "txt" Then
With FSO.GetFile(F)
Set Folder = ShA.NameSpace(.ParentFolder.Path)
All = "" : Set File = Folder.ParseName(.Name)
End With : Dict.RemoveAll : Max = 0
For i = 0 to 288
If i <> 155 And i <> 176 And i <> 178 And i <> 180 And i <> 182 Then
Value = Folder.GetDetailsOf(File, i)
If Value <> "" And InStr(LCase(Value), " нет") = 0 And InStr(Value, "Нет") = 0 And _
InStr(LCase(Value), "отсутствует") = 0 And InStr(LCase(Value), "без ") = 0 Then
Name = Folder.GetDetailsOf(0, i) : Ln = Len(Name) : If Ln > Max Then Max = Ln
Dict.Add Name, Value
End If
End If
Next
For Each Key in Dict.Keys
All = All & vbNewLine & Key & ": " & String(Max - Len(Key), " ") & Dict.Item(Key)
Next : NF = Path & FSO.GetBaseName(F) & ".txt" : If Not FSO.FileExists(NF) Then _
FSO.OpenTextFile(NF, 2, True, -1).Write Mid(All, 3) : If Open = 1 Then ShA.Open(NF)
End If
Loop |
_________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
KatMuse
Joined: 26 Jul 2014 Posts: 82
|
(Separately) Posted: Fri Jan 02, 2015 02:27 Post subject: |
|
|
Flasher,
Спасибо! Доработка восхитительна... Вся необходимая информация представлена наглядно и удобно. Очень легко искать нужный файл.
Реализация задачи превосходит все ожидания в сотню раз! Невероятно! |
|
Back to top |
|
|
KatMuse
Joined: 26 Jul 2014 Posts: 82
|
(Separately) Posted: Mon Jan 26, 2015 12:57 Post subject: |
|
|
Можно ли попросить добавить пакетный режим, то есть, например, при выделении нужных файлов, в режиме без подкаталогов, заместители создавались бы автоматически и не открывались. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Jan 26, 2015 13:15 Post subject: |
|
|
KatMuse
Code: | Path = FSO.BuildPath(.Item(1), "\") : If C = 3 Then Open = .Item(2) | заменить на
Code: | If C = 2 Then Open = .Item(1) | и в 4-й строке снизу Path заменить на FSO.GetParentFolderName(F) & "\"
2-й и 3-й параметры убрать. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
KatMuse
Joined: 26 Jul 2014 Posts: 82
|
(Separately) Posted: Mon Jan 26, 2015 17:28 Post subject: |
|
|
Юху!!! Всё чудесно работает!!!
Файлики создаются - я радуюсь Спасибо!!! |
|
Back to top |
|
|
|