View previous topic :: View next topic |
Author |
Message |
palle
Joined: 15 Apr 2021 Posts: 11
|
(Separately) Posted: Fri Jun 27, 2025 16:12 Post subject: Добавить к существующему выделению парные файлы |
|
|
Добрый день.
Есть каталог с файлами CR2 и XMP. Имена попарно одинаковые.
Выделяю несколько CR2.
Как к выделению добавить соответствующие выделенным файлам XMP? |
|
Back to top |
|
 |
sa
Joined: 29 Apr 2009 Posts: 2693
|
(Separately) Posted: Fri Jun 27, 2025 16:52 Post subject: |
|
|
Попробуйте так: вначале выделите только нужные CR2 и все остальные файлы (те, что не CR2), нажмите Ctrl+Shift+B, затем выделите группу файлов маской *.CR2>*.XMP. |
|
Back to top |
|
 |
palle
Joined: 15 Apr 2021 Posts: 11
|
(Separately) Posted: Fri Jun 27, 2025 19:50 Post subject: |
|
|
Большое спасибо!
Чтобы не терялся исходный список файлов сделал такую связку:
em_Select_xmp,cm_DirBranchSel,em_Select_cr2_xmp,cm_RereadSource,cm_RestoreSelection |
|
Back to top |
|
 |
sa
Joined: 29 Apr 2009 Posts: 2693
|
(Separately) Posted: Fri Jun 27, 2025 20:27 Post subject: |
|
|
palle
А что внутри пользовательских команд? |
|
Back to top |
|
 |
palle
Joined: 15 Apr 2021 Posts: 11
|
(Separately) Posted: Fri Jun 27, 2025 23:05 Post subject: |
|
|
[em_Select_cr2_xmp]
button=
cmd=SELECTFILES *.cr2 > *.xmp
[em_Select_xmp]
button=
cmd=selectfiles *.xmp |
|
Back to top |
|
 |
sa
Joined: 29 Apr 2009 Posts: 2693
|
(Separately) Posted: Sat Jun 28, 2025 00:20 Post subject: |
|
|
Да, так работает (при наличии хотя бы одного выделенного CR2-файла). |
|
Back to top |
|
 |
Monarch-LFV

Joined: 22 Jul 2019 Posts: 326
|
(Separately) Posted: Sat Jun 28, 2025 02:01 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" |
|
|
Back to top |
|
 |
sa
Joined: 29 Apr 2009 Posts: 2693
|
(Separately) Posted: Mon Jun 30, 2025 15:08 Post subject: |
|
|
В простейшем случае можно воспользоваться такой сцепкой команд: cm_CopyNamesToClip,em_Select_xmp_FromClip, где
Code: | [em_Select_xmp_FromClip]
cmd=SELECTFILES
param=%|$CLIPBOARD0|>*.xmp | Ограничение для буфера имён файлов: максимум 8 килобайт, имена не должны содержать пробелы.
При таком способе любые выделенные файлы останутся выделенными после очередного выполнения сцепки. |
|
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
|