'================================ VBS ===============================
' Создание файла с текстом или растром из буфера обмена (при наличии)
'
' Условия: 1) первый параметр в поле "Команда:": "%COMMANDER_EXE%"
' 2) для обратной совместимости — запуск от %$SystemX86%\wscript.exe
'
' Параметры: "<имя файла>" "<путь назначения>"
' /d — ключ ввода имени через диалог
'
' Примеры: "" "%P" | "%O.lst" "%P" | File "%T" /d
'
Option Explicit
'====================== Путь к утилите NirCmd =======================
Const NirCmd = """%COMMANDER_PATH%\Utils\NirCmd\nircmd.exe"""
'=============================================== Автор: Flasher © ===
Const Title = " Создание файла с текстом из буфера обмена"
Dim P, FSO, WSS, Clip, N, S, R, i, Enc, Ext, F, FP, c
Set P = WSH.Arguments : If P.UnNamed.Count < 3 Then _
MsgBox "Укажите 3 параметра!", 4144, Title & " " : WSH.Quit
Set WSS = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
With GetObject("New:1C3B4210-F441-11CE-B9EA-00AA006B1A69)")
.GetFromClipboard : If .GetFormat(0) Then WSH.Quit
If .GetFormat(1) Then Clip = .GetText : If Len(Clip) = 0 Then WSH.Quit
End With
N = P(1) : If P.Named.Exists("d") Or FSO.GetBaseName(N) = "" Then _
N = RTrim(InputBox(String(5, vbCr) & "Введите имя файла:", Title, N,,_
(CreateObject("htmlfile").parentwindow.self.screen.Height-18240/WSS._
RegRead("HKCU\Control Panel\Desktop\WindowMetrics\AppliedDPI"))*7.5))
S = Split(": ? * "" \ / | < >") : If N = "" Then WSH.Quit
R = Array(-230,-225,-246,698,-24,-24,-24,706,707)
For i = 0 To 8 : N = Replace(N, S(i), ChrW(R(i))) : Next
Ext = "." & FSO.GetExtensionName(N)
If IsEmpty(Clip) Then
If InStr(1, ".bmg.gif.jpg.png.tif.tiff.", Ext &_
".", 1) = 0 Then Ext = ".jpg" : N = FSO.GetBaseName(N)
ElseIf Ext = "." Then Ext = ".txt" : N = N & Ext
End If
F = "\\?\" & P(2) & FSO.GetBaseName(N) : FP = F & Ext
While FSO.FileExists(FP) Or FSO.FolderExists(FP)
c = c + 1 : FP = F & " (" & c & ")" & Ext
Wend : If Len(FP) < 264 Then F = Mid(FP, 5) Else F = FP
If IsEmpty(Clip) Then
WSS.Run NirCmd & " clipboard saveimage """ & F & """",,1
Else
With New Regexp
.Pattern = "[^\s!-‚-›\u0080-\u00FF\u0400-\u04FF\u20A0-\u20CF\u2100-\u214F\w‘’–—]"
.Global = True : If .Test(Clip) Then Enc = True Else Enc = False
End With : FSO.CreateTextFile(F, 1, Enc).Write Clip
End If
If FSO.FileExists(F) Then WSS.Exec P(0) & " /A /O /S """ & Mid(FP, 5) & """"
Set P = Nothing : Set FSO = Nothing : Set WSS = Nothing |