View previous topic :: View next topic |
Author |
Message |
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Feb 06, 2017 18:32 Post subject: |
|
|
BeardFury78
Это какой из? Хотя они оба морально устарели. Во втором так вообще многократный вызов cmd /c copy используется, да юникодные имена не читаются. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
BeardFury78
Joined: 25 Aug 2016 Posts: 213
|
(Separately) Posted: Mon Feb 06, 2017 18:39 Post subject: |
|
|
Flasher
Вот пользуюсь этим. Пока нет нареканий. Но если вы хотите, можете сделать вариант получше, буду тогда пользоваться вашим скриптом. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Feb 06, 2017 18:41 Post subject: |
|
|
BeardFury78
Если нет нареканий, то к чему было?: BeardFury78 wrote: | но уникод нужен |
_________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
BeardFury78
Joined: 25 Aug 2016 Posts: 213
|
(Separately) Posted: Mon Feb 06, 2017 18:44 Post subject: |
|
|
Flasher
Это к Dimsok-y было по поводу его первой кнопки до того как он добавил вторую кнопку. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Feb 06, 2017 18:46 Post subject: |
|
|
BeardFury78
Какая разница к кому? Первая кнопка у него прекрасно запишет в Юникод (UTF-16 LE без ВОМ), UTF-7/8 и т.д., если сами файлы были в той же кодировке. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
BeardFury78
Joined: 25 Aug 2016 Posts: 213
|
(Separately) Posted: Mon Feb 06, 2017 18:52 Post subject: |
|
|
Flasher
Ну Dimsok сам утверждал, что если уникод не нужен, то можно пользоваться первой кнопкой, а так как файлы у меня только utf-8 в основном лежат, то думал, что такая кнопка не пригодится и не тестировал поэтому. Не знаю почему Dimsok так сказал. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Feb 06, 2017 18:54 Post subject: |
|
|
BeardFury78
Ибо не ведает, что творит.
Главное - это совпадение (с учётом BOM).
Хотя по сути это же будет и с приведённым скриптом. Правда, сейчас я бы клеил по-другому. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Nick
Joined: 26 Dec 2014 Posts: 107
|
(Separately) Posted: Sat Aug 26, 2017 14:16 Post subject: |
|
|
Кто подскажет скрипт, чтобы можно было:
─ Дописать все выделенные файлы в файл, который находится под курсором.
─ Получившийся файл имел название и расширение файла, который находился под курсором (с дополнением к имени (к примеру, "_общий файл")).
─ Возможность установки флага перезаписи или пропуска если такой файл уже существует.
По этой ссылке у меня скрипт вообще почему-то не работает.
Этот сценарий работает, но имя не берется по файлу, который под курсором и если такой файл уже существует, то происходит его перезапись... |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Aug 26, 2017 15:33 Post subject: |
|
|
Nick
Второй пункт противоречит первому.
Если файл находится где-нибудь в середине или в конце выделенного списка, то в какой последовательности записывать?
Сделал в той же (от первого).
Code: | '••••••••••••••••••••••••••••• VBS ••••••••••••••••••••••••••••
' Бинарное соединение файлов, выделенных в активной панели ТC
'
' Параметры: %WL
' Дополнительные (иначе дозапись осуществляется в первый файл):
' "<путь получателя при создании>" <режим записи> "<имя файла>"
'
' Режим записи принимает следующие значения:
' 0 = перезаписывать существующий файл; (по умолчанию)
' 1 = не создавать файл при существовании;
' 2 = добавлять счётчик к имени нового файла.
'
' Ключ для удаления исходных файлов: /del
'
' Примеры: %WL /del | %WL "%T" 2 | %WL "%P" 0 %N
'••••••••••••••••••••••••••••••••••••••••• Автор: Flasher © •••
Option Explicit: Dim Mode, Del, C, List, Name, Path, Er, Rgx,_
Col, Dic, FSO, FP, BN, Ext, i, Fi, N, Num, Fl, Arr, FMem, Buff
With WSH.Arguments
Mode = 0 : Del = .Named.Exists("del")
C = .UnNamed.Count : If C = 0 Then WSH.Quit
List = .Item(0) : If C = 4 Then Name = .Item(3)
If C > 1 Then Path = .Item(1) : Mode = .Item(2)
End With
If C = 3 Then
Set Rgx = New RegExp : Rgx.Pattern = "[""/*\\:|?<>]"
While Rgx.Test(Name) Or IsEmpty(Name)
If Not IsEmpty(Name) Then Er = Space(38) & "Некорректное имя!"
Name = RTrim(InputBox(String(3, vbCr) & Er & vbCr & vbCr &_
"Введите имя нового файла:", " Соединение файлов", Name))
Wend : If Name = "" Then WSH.Quit
End If
Set Col = CreateObject("Scripting.Dictionary")
Set Dic = CreateObject("Scripting.Dictionary")
Set FSO = CreateObject("Scripting.FileSystemObject")
If C > 1 Then
FP = FSO.BuildPath(Path, Name)
If Len(FP) > 259 Then FP = "\\?\" & FP : Path = "\\?\" & Path
If Mode = 1 Then
If FSO.FileExists(FP) Or FSO.FolderExists(FP) Then WSH.Quit
ElseIf Mode = 2 Then
BN = FSO.GetBaseName(Name) : Ext = FSO.GetExtensionName(FP)
If Len(Ext) Then Ext = "." & Ext
While FSO.FileExists(FP) Or FSO.FolderExists(FP)
i = i + 1 : FP = FSO.BuildPath(Path, BN & " (" & i & ")" & Ext)
Wend
End If
End If
Set List = FSO.OpenTextFile(List,,,-1)
Do : Fi = List.ReadLine
If Len(Fi) > 259 Then Fi = "\\?\" & Fi
If FSO.FileExists(Fi) Then Col.Add Fi, "" : _
Num = FSO.GetFIle(Fi).Size : If Num Then Dic.Add Fi, Num
Loop Until List.AtEndOfStream : List.Close : N = 0
Num = Dic.Count : If Num = 0 Then WSH.Quit
Arr = Col.Keys : If C = 1 Then FP = Arr(0)
List = Dic.Keys : If Num = 1 And FP = List(0) Then WSH.Quit
If Not FSO.FileExists(FP) Then FSO.CreateTextFile(FP).Close
Set Fl = FSO.GetFile(FP) : If C = 1 And Dic.Exists(FP) Then N = 1
With CreateObject("SAPI.SpFileStream")
If Dic.Exists(FP) And FP <> List(0) Then _
.Open FP, 2 : .Read FMem, Fl.Size :_
.Close : Fl.OpenAsTextStream(2).Close
For i = N To Num - 1
Fi = List(i) : C = 0 : If Left(Fi, 1) = "\" Then C = 2
If FP = Fi Then Buff = FMem : FMem = "" Else _
.Open Fi, C : .Read Buff, Dic.Item(Fi) : .Close
.Open FP, 1 : .Seek Fl.Size : .Write Buff : Buff = "" : .Close
Next
End With
If Del Then For Each i in Arr :_
If i <> FP Then FSO.DeleteFile i, 1 End If : Next
CreateObject("WScript.Shell").PopUp _
"Файлы соединены!", 0.6, " Соединение файлов", 4160 |
[+] Отладил работу при наличии пустых файлов. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Nick
Joined: 26 Dec 2014 Posts: 107
|
(Separately) Posted: Mon Sep 04, 2017 13:57 Post subject: |
|
|
Flasher wrote: | Второй пункт противоречит первому. | Имелось в виду, что создается новый файл (а не перезаписывается уже существующий) с новым именем.
Flasher wrote: | Если файл находится где-нибудь в середине или в конце выделенного списка, то в какой последовательности записывать?
| Тогда, наверное по той сортировке, которая в текущий момент в TC.
─ При написании имени в параметрах скрипта после %N (например, %N Общий файл) это имя добавляется после расширения, а хотелось бы, чтобы это было сделано до него. С параметрами "%O Новое имя%E" не получается.
─ Почему-то не работает при склеивании архива с файлом изображения.
Изображение не читается! При обычной склейке файлов через командную строку такого не происходит.
Например: copy "Новое изображение.jpg" /b + "Новый текстовый файл.txt" /b + "Новый архив.zip" /b "Новое изображение результат.jpg" |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10278 Location: Россия, Саратов
|
(Separately) Posted: Mon Sep 04, 2017 14:19 Post subject: |
|
|
Nick
Читабельный результат при склейке текстовых файлов с бинарниками — это что-то новое... _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Sep 04, 2017 18:44 Post subject: |
|
|
Nick wrote: | С параметрами "%O Новое имя%E" не получается.
| Что именно не получается? Нет точки перед расширением? Так кто мешает поставить?
По поводу читабельности изображения, которое после соединения уже представляет из себя нечто иное, я тоже не особо понял. Цель читать такое и не ставилась. Скрипт клеит побайтово, аналогично copy /b. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Lisabon
Joined: 18 Feb 2011 Posts: 147
|
(Separately) Posted: Fri Sep 08, 2017 08:37 Post subject: |
|
|
Flasher
Решил попробовать твой скрипт: http://forum.wincmd.ru/viewpost.php?p=123838
но появляется ошибка:
Code: | Сценарий: C:\ReadMe.vbs
Строка: 73
Символ: 5
Ошибка: Недопустимый вызов или аргумент процедуры
Код: 800A0005
Источник: Ошибка выполнения Microsoft VBScript |
Кнопка:
Code: | TOTALCMD#BAR#DATA
C:\ReadMe.vbs
%WL "%P" 2 %N
C:\Windows\System32\WScript.exe,2
ReadMe
-1
|
Для проверки пробую объединить файлы с именами:
Code: | C:\AddDateTime.vbs
C:\CopyMove.vbs |
P.S. Total Commander v9.0a 32-bit, Windows 8.1 64-bit |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Sep 08, 2017 16:56 Post subject: |
|
|
Lisabon
Не вижу ошибок. Скинь сами файлы. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Lisabon
Joined: 18 Feb 2011 Posts: 147
|
(Separately) Posted: Fri Sep 08, 2017 17:20 Post subject: |
|
|
Flasher
Может снова проявилась особенность 64-bit версии ОС. Попробовал на виртуальной Windows XP 32-bit и там такой ошибки нет.
TestScript |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|