Страница 10 из 42
Добавлено: Вс июл 19, 2009 15:38
Volniy
universal007 писал(а): теперь у меня создаётся файл с именем по первому слову из текста но без расширения.
Какая команда отвечает за расширение?
Да никакая
Просто добавь нужное расширение к генерируемому имени файла, например так
Код: Выделить всё
FileName = Left(Clip, InStr(Clip, " ") - 1) & ".txt"
universal007 писал(а):И если не трудно - подскажите где поискать описание команд при создании подобных скриптов?
Этот набор команд входит в Windows Script и называется VBS - скриптовый язык, один из клонов Visual Basic. Полное описание языка ессно присутствует в
MSDN. Если немного поискать в сети можно найти и на русском.
Добавлено: Вт июл 21, 2009 16:46
universal007
Volniy писал(а):Просто добавь нужное расширение к генерируемому имени файла
Спасибо всё работает.
И если я пишу расширение .doc то создаётся текстовый файл в
формате Word. Это хорошо.
Но у меня опять вопросы:
Как сделать что бы хотя бы два первых слова появлялись в имени файла?
И если текст в буфере начинается со спецсимволов типа " (ковычек)
то выдаётся ошибка. Как побороть это?
Вот ошибка:
Сценарий: C:\Program Files\Total Commander\Script\Создание текстового файла из
буфера.vbs
Строка: 38
Символ: 1
Ошибка: Недопустимое имя или номер файла
Код: 800A0034
Источник: Ошибка выполнения Microsoft VBScript
Добавлено: Ср июл 22, 2009 17:42
Batya
universal007 писал(а):Как сделать что бы хотя бы два первых слова появлялись в имени файла?
И если текст в буфере начинается со спецсимволов типа " (ковычек)
то выдаётся ошибка. Как побороть это?
"По заявкам радиослушателей ..." (с):
Код: Выделить всё
'=================================================================
' Создание текстового файла с содержимым буфера обмена
'=================================================================
Option Explicit
Dim CharArr
'========== Изменяемые параметры =================================
Const Ext = "txt" 'Расширение создаваемого файла
'Массив недопустимых символов. Заменяем их указанным ниже символом
CharArr = Array(vbCrLf,vbCr,vbLf,"","/","*","?","""")
'Символ для замены
Const ReplaceChar = ""
'Количество первых слов из буфера обмена для имени файла
Const NumWords = 2
'=================================================================
Dim Mess, FSO, FileName, Clip, Btn, Title, Text
SetMess
On Error Resume Next
Clip = CreateObject("TCScript.Helper").GetTextFromClip
If Err.Number > 0 Then
MsgBox Mess(3), vbCritical+vbOKOnly, Mess(0)
Quit Err.Number
End If
On Error GoTo 0
If Len(Clip) = 0 Then
MsgBox Mess(3), vbCritical+vbOKOnly, Mess(0)
Quit 0
End If
Set FSO = CreateObject("Scripting.FileSystemObject")
FileName = GetFileName(Clip) & "." & Ext
If FSO.FileExists(FileName) Then
Text = Mess(4) & vbCrLf & Mess(5) & FileName & Mess(7) & vbCrLf
Title = Mess(1)
Else
Text = Mess(4) & vbCrLf & Mess(6) & FileName & Mess(8) & vbCrLf
Title = Mess(0)
End If
Btn = MsgBox(Text, vbYesNo + vbQuestion, Title)
If Btn = 7 Then Quit 0
FSO.OpenTextFile(FileName, 2, True).Write Clip
Quit 0
Sub SetMess
Set Mess = CreateObject("Scripting.Dictionary")
With Mess
.Add 0, "Создание файла с содержимым буфера обмена"
.Add 1, "Замена содержимого файла содержимым буфера обмена"
.Add 2, "Не зарегистрирован объект 'Script Helper ActiveX for Total Commander'!"
.Add 3, "Буфер обмена не содержит текста!"
.Add 4, "Буфер обмена содержит текст."
.Add 5, "Заменить содержимое файла "
.Add 6, "Создать файл "
.Add 7, " текстом из буфера обмена?"
.Add 8, " с содержимым буфера обмена?"
End With
End Sub
Function GetFileName(pText)
Dim lText, Char
lText = pText
For Each Char In CharArr
lText = Replace(lText, Char, ReplaceChar)
Next
GetFileName = GetSomeWords(lText, NumWords)
End Function
Function GetSomeWords(pText, pNumWords)
Dim regEx, lM, l, lF, lNum
Set regEx = New RegExp
regEx.Pattern = "\S+"
regEx.Global = True
Set lM = regEx.Execute(pText)
If lM.Count < pNumWords Then
lNum = lM.Count
Else
lNum = pNumWords
End If
For l = 1 To lNum
lF = lF & " " & lM.Item(l-1).Value
Next
GetSomeWords = Mid(lF, 2)
Set lM = Nothing
Set regEx = Nothing
End Function
Sub Quit(pExitCode)
Set FSO = Nothing
Set Mess = Nothing
WScript.Quit pExitCode
End Sub
Добавлено: Ср июл 22, 2009 23:08
universal007
Batya писал(а):"По заявкам радиослушателей ..."
Вот это класс!!! Вот спасибо!!!
Я думаю что этот "скриптище",не побоюсь этого слова,
нужно определить самым верным по теме текст из буфера в файл!
Огромное спасибо не только от меня но и от тех юзеров
которые будут юзать мой тотал с такой кнопкой - я им нах... поудаляю
и мой компьютер и проводник!
Добавлено: Чт июл 23, 2009 00:54
Batya
universal007 писал(а):я им нах... поудаляю и мой компьютер и проводник!
Ты только, пожалуста, не обижайся, но, судя по твоим постам, у меня создалось впечатление, что у тебя пока маловато опыта делать безопасно такие неординарные, бесполезные, а где-то, на мой взгляд, и
вредные вещи.
Вообщем, не завидую я твоим юзерам.
Добавлено: Чт июл 23, 2009 01:26
Tol!k
Batya писал(а):"По заявкам радиослушателей ..." (с)
1) Одиночные символы -&+#... скрипт считает словами (что не верно). Даже если символ попал под автозамену (что тем более не верно)
2) Как увеличить количество слов в создаваемом имени до трёх-пяти?
Добавлено: Чт июл 23, 2009 09:20
Batya
Tol!k писал(а):1) Одиночные символы -&+#... скрипт считает словами (что не верно). Даже если символ попал под автозамену (что тем более не верно)
Что-то я не совсем понял. Объясни на примере.
Tol!k писал(а):2) Как увеличить количество слов в создаваемом имени до трёх-пяти?
Готово.
Добавлено: Чт июл 23, 2009 23:12
Tol!k
Например: Артист - Альбом. Создаётся "Артист -.txt"
В случае автозаменяемых символов в новой версии результат улучшился.
Добавлено: Чт июл 23, 2009 23:19
Batya
Tol!k
А, понял.
А что считать словами?
Можешь попробовать (возможно, тебе больше понравится) поменять в функции GetSomeWords маску поиска на:
Добавлено: Пт июл 24, 2009 00:01
Tol!k
"Потирает" всю кириллицу :(
Новый пример: Полковник и однополчане
А что считать словами?
Ну "-" точно не слово. Но наверно проще не считать словами любые одиночные символы
Добавлено: Пт июл 24, 2009 00:37
Batya
Tol!k
Слушай, может подберешь сам нужную тебе маску? Синтаксис можно глянуть
здесь.
Добавлено: Пт июл 24, 2009 00:53
Tol!k
Но было бы лучше, если бы одиночные символы не пропадали, а оставались бы в имени файла не считаясь словами
Добавлено: Пт июл 24, 2009 11:39
Batya
Tol!k писал(а):Но было бы лучше, если бы одиночные символы не пропадали, а оставались бы в имени файла не считаясь словами
Специально для тебя:
Код: Выделить всё
Function GetSomeWords(pText, pNumWords)
Dim regEx, lM, lNum
Set regEx = New RegExp
regEx.Pattern = "\S{2,}"
regEx.Global = True
If regEx.Test(pText) Then
Set lM = regEx.Execute(pText)
If lM.Count < pNumWords Then
lNum = lM.Count
Else
lNum = pNumWords
End If
GetSomeWords = Left(pText, lM.Item(lNum-1).FirstIndex + Len(lM.Item(lNum-1).Value))
Set lM = Nothing
Else
GetSomeWords = ""
End If
Set regEx = Nothing
End Function
Добавлено: Пт июл 24, 2009 17:14
Tol!k
Batya писал(а):Специально для тебя
Вот спасибо!
А зачем
Left(pText, lM.Item(lNum-1).FirstIndex + Len(lM.Item(lNum-1).Value) - 1) ? Это обрезает последний символ второго слова:
Нет, я не сплю. Я просто медленно моргаю. => Нет, я н.txt
Добавлено: Пт июл 24, 2009 18:20
Batya
Tol!k писал(а):А зачем
Ну, тогда не надо
Видимо, в мозгах глюк проскочил
