Monarch-LFV

|
Posted: Sat Jun 28, 2025 03:23 Post subject: |
|
|
palle
Еще придумал способ с утилитой Pressed в связке с VBS-скриптом (с использованием буфера обмена):
 Add_to_Select_Files_Same_BaseName.vbs Code: | ' К имеющимся выделенным файлам дополнительно выделить одноименные файлы,
' но с другим заданным расширением
' Параметр: %WL
' =========================================
On Error Resume Next
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WshShell = CreateObject("WScript.Shell")
Dim ArrText(1000000)
ext=inputbox("Файлы с каким расширением выделить дополнительно?", "Добавить к выделению", "*")
For Each F In Split(FSO.OpenTextFile(WScript.Arguments(0),,,-1).ReadAll, vbCRLF)
If F = "" Then
text = join(ArrText, "")
text=left(text, len(text)-2)
CopyToClip_UTF8_without_BOM(text)
pressed = WshShell.ExpandEnvironmentStrings("%commander_path%") & "\Plugins\exe\Pressed\Pressed.exe"
WshShell.run """" & pressed & """ ""/zzz:cm_LoadSelectionFromClip"""
wscript.quit
end if
if FSO.FileExists(F) then
k=k+1
ff=FSO.GetFileName(F)
if ext="*" then ArrText(k)="""" & ff & """" & vbcrlf else ArrText(k)=ff & vbcrlf
dop = FSO.GetBaseName(F) & "." & ext
k=k+1
if ext="*" or instr(ext, "?") then ArrText(k)="""" & dop & """" & vbcrlf else ArrText(k)=dop & vbcrlf
end if
Next
sub CopyToClip_UTF8_without_BOM(MultiLine_text)
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WshShell = CreateObject("WScript.Shell")
tmpclp = WshShell.ExpandEnvironmentStrings("%temp%") & "\~$Clipboard.txt"
If FSO.fileExists(tmpclp) then FSO.DeleteFile tmpclp
with CreateObject("ADODB.Stream")
.Charset = "utf-8"
.Type = 2
.Open
.WriteText MultiLine_text
.Position = 0
.Type = 1
.Position = 3
data = .Read
.close
.open
.Write data
.SaveToFile tmpclp, 1
.Close
end with
WshShell.Run "cmd /c chcp 65001&&type " & tmpclp & "| clip", 0, True
FSO.DeleteFile tmpclp
end sub |
Путь до утилиты Pressed внутри скрипта поправить на свой. Расширение, файлы с которым нужно дополнительно выделить задается пользователем в диалоговом окне, по умолчанию "*", то есть любые одноименные файлы.
Добавлено спустя 1 час 22 минуты:
Или еще вариант без использования буфера обмена, с сохранением и восстановлением выделения из файла:
 Add_to_Select_Files_Same_BaseName1.vbs Code: | ' К имеющимся выделенным файлам дополнительно выделить одноименные файлы, но с другим заданным расширением
' Параметр: %WL
' =========================================
On Error Resume Next
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WshShell = CreateObject("WScript.Shell")
Dim ArrText(1000000)
ext=inputbox("Файлы с каким расширением выделить дополнительно?", "Добавить к выделению", "*")
For Each F In Split(FSO.OpenTextFile(WScript.Arguments(0),,,-1).ReadAll, vbCRLF)
if FSO.FileExists(F) then
k=k+1
ff=FSO.GetFileName(F)
if ext="*" then ArrText(k)="""" & ff & """" & vbcrlf else ArrText(k)=ff & vbcrlf
dop = FSO.GetBaseName(F) & "." & ext
k=k+1
if ext="*" or instr(ext, "?") then ArrText(k)="""" & dop & """" & vbcrlf else ArrText(k)=dop & vbcrlf
end if
If F = "" Then
text = join(ArrText, "")
text=left(text, len(text)-2)
txtfile = WshShell.ExpandEnvironmentStrings("%temp%") & "\~$Clipboard.txt"
Set f = FSO.OpenTextFile(txtfile, 2, 1, -1): f.Write text: f.Close
pressed = WshShell.ExpandEnvironmentStrings("%commander_path%") & "\Plugins\exe\Pressed\Pressed.exe"
Return = WshShell.run ("""" & pressed & """ ""/zzz:em_zzz_Load_Add_to_Select_Files""", 1, True)
FSO.DeleteFile(txtfile)
end if
Next |
Но придется дополнительно завести пользовательскую команду в usercmd.ini:
Code: | [em_zzz_Load_Add_to_Select_Files]
cmd=LOADSELECTION "%Temp%\~$Clipboard.txt" |
|
|