LonerD

|
Posted: Tue May 07, 2013 23:03 Post subject: |
|
|
Вот такой ещё многовариантный скрипт на vbs есть. В основе - скрипт Андрея Аверина (не знаю - полностью ли делалось с нуля или заимствовались фрагменты из скриптов других авторов), немного я что-то переделывал под свои нужды.
Code: | '=================================================================
' Расширенное копирование в буфер имён и расширений файлов
'=================================================================
' Build: 1.55 (2012.12.17)
' Script: CopyNamesToClip.vbs
'=================================================================
' Parameters
' 1-й: Cписок файлов
' 2-й: Состав итогового списка:
' "1" - расширения файлов
' "2" - имена файлов
' "3" - "чистые имена" файлов (без расширения)
' 3-й: Разделитель (если = "##", то вводится в диалоге)
' 4-й:
' "1" - преобразовать список файлов в одну строку
' "0" (или другое значение) - не преобразовать
' 5-й: Начало строки
' 6-й: Конец строки
' Прим. 1 : одинаковые расширения/имена не добавляются
' Прим. 2 : начало и конец строк добавляются в каждую строку
'=================================================================
' %L "1" ";*." "1" "*." ";" - результат - *.vbs;*.txt;*.au3;
' %L "2" ";" "1" - результат - Read_me.txt;Wincmd.ini
' %L "3" "|" "1" - результат - Read_me|Wincmd|Wcmicons
'=================================================================
NirCmd = "%commander_path%\Plugins\exe\Nircmd\Nircmd.exe"
'=================================================================
Cnt = WScript.Arguments.Count
If Cnt > 2 Then
Endd = "" : Home = "" : Text = ""
Delim = WScript.Arguments(2)
If Cnt > 3 Then Llist = WScript.Arguments(3)
If Delim = "##" Then Delim = InputBox("Enter separator", "", ";")
If Len(Delim) = 0 and StrComp(Llist,1,vbTextCompare) = 0 Then Delim = ";"
Dim FSO, WSH
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSH = WScript.CreateObject("WScript.Shell")
If Cnt > 4 Then
Home = WScript.Arguments(4)
If Cnt > 5 Then Endd = WScript.Arguments(5)
End If
Set ListFile = FSO.OpenTextFile(GetPath(WScript.Arguments(0)), 1)
Do While Not ListFile.AtEndOfStream
File = ListFile.ReadLine
Ext = FSO.GetExtensionName(File)
If StrComp(Llist,1,vbTextCompare) = 0 Then
Select Case WScript.Arguments(1)
Case 1 Stroka = FSO.GetExtensionName(File)
Case 2 Stroka = FSO.GetBaseName(File) & "." & Ext
Case 3 Stroka = FSO.GetBaseName(File)
End Select
Else
Select Case WScript.Arguments(1)
Case 1 Stroka = Home & Ext & Endd
Case 2 Stroka = Home & FSO.GetBaseName(File) & "." & Ext & Endd
Case 3 Stroka = Home & FSO.GetBaseName(File) & Endd
End Select
End If
If InStr(UCase(Text), UCase(Stroka)) = 0 Then
If StrComp(Llist,1,vbTextCompare) = 0 Then
Text = Text & Stroka & Delim
Else
Text = Text & Stroka & Delim & vbCrLf
End If
End If
Loop
If StrComp(Llist,1,vbTextCompare) = 0 Then Text = Home & Left(Text, Len(Text) - Len(Delim)) & Endd
Tmp = FSO.GetSpecialFolder(2) & "\" & FSO.GetTempName()
FSO.CreateTextFile(Tmp, True).Write Text
WSH.Run Chr(34) & GetPath(NirCmd) & Chr(34) & " " & "clipboard readfile " & Tmp , 2,True
WScript.Sleep 1000
FSO.DeleteFile Tmp
Else
CreateObject("WScript.Shell").Exec(Chr(34) & NirCmd & Chr(34) & " clipboard clear")
End If
Set ListFile = Nothing : Set WSH = Nothing : Set FSO = Nothing: WScript.Quit
Function GetPath(pPath) : GetPath = WSH.ExpandEnvironmentStrings(pPath) : End Function
'================================================================= |
_________________ Windows 11 | TC DreamLair eternal pre-α |
|