.Tol!k писал(а): в буфере обмена: приставка;
Ключевое слово - в БУФЕРЕ обмена.
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Вряд ли такая ошибка выдается на команды ДОС. Скорее всего (у меня так было) глючит надстройка на оболочку.Tol!k писал(а):команда for ... do ren ... (и прямо на кнопке, и в скрипте вызываемом с кнопки) дает это:
Access violation at address 00407275. Read of address 00000000.
Код: Выделить всё
For Each F In Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0), 1).ReadAll, vbNewLine)Код: Выделить всё
'============================
' Колонка Result1 будет возвращать текстовое содержимое буфера обмена
'============================
content1 = Result1
Function Result1
On Error Resume Next
Result1 = CreateObject("TCScript.Helper").GetTextFromClip
If Err.Number <> 0 Then
Result1 = ""
End If
On Error GoTo 0
End FunctionКод: Выделить всё
'======================================================================
' Переименование выделенных файлов\папок -
' Добавление в начало имени текста из буфера обмена
' Параметры вызова из TC:
' %L
'======================================================================
Option Explicit
Dim CharArr, RemStrArr
'=== Изменяемые параметры =============================================
'Массив недопустимых символов. Заменяем их указанным ниже символом
CharArr = Array(Chr(10), Chr(13), "\", "/")
'Символ для замены
Const ReplaceChar = " "
'Переходный символ
Const TransChar = "_"
'Массив удаляемых строк
RemStrArr = Array("Спёрто с http://www.site.com/", _
"пишем, что хотим удалить", _
"пишем, что также хотим удалить")
'======================================================================
Dim Mess, FSO, FileList, TCS, Clip, Char, F, FF
SetMess
Set FSO = CreateObject("Scripting.FileSystemObject")
CheckParam
For Each F In Split(FSO.OpenTextFile(FileList, 1, False).ReadAll, vbNewLine)
F = Trim(F)
If F <> "" Then
If FSO.FileExists(F) Then
Set FF = FSO.GetFile(F)
End If
If FSO.FileExists(F) Then
Set FF = FSO.GetFile(F)
End If
If FSO.FolderExists(F) Then
Set FF = FSO.GetFolder(F)
End If
FF.Name = Clip & TransChar & FF.Name
End If
Set FF = Nothing
Next
Quit
Sub CheckParam
If WScript.Arguments.Count = 0 Then
MessBox Mess(1), 1
Quit
End If
FileList = WScript.Arguments(0)
If Not FSO.FileExists(FileList) Then
MessBox Mess(2), 1
Quit
End If
On Error Resume Next
Set TCS = CreateObject("TCScript.Helper")
If Err.Number > 0 Then
MessBox Mess(3), 1
Quit
End If
On Error GoTo 0
Clip = TCS.GetTextFromClip
If Clip = "" Then
MessBox Mess(4), 1
Quit
End If
For Each Char In RemStrArr
Clip = Replace(Clip, Char, "")
Next
For Each Char In CharArr
Clip = Replace(Clip, Char, ReplaceChar)
Next
Clip = Trim(Clip)
End Sub
Sub SetMess
Set Mess = CreateObject("Scripting.Dictionary")
Mess.Add 0, "Переименование"
Mess.Add 1, "Неправильно указаны параметры!"
Mess.Add 2, "Входной параметр не является файлом!"
Mess.Add 3, "Не зарегистрирован объект 'Script Helper ActiveX for Total Commander'!"
Mess.Add 4, "Буфер обмена не содержит текста!"
End Sub
Function MessBox(pMess, pMode)
Dim lIcon
Select Case pMode
Case 1 lIcon = vbCritical + vbOKOnly
Case 2 lIcon = vbExclamation + vbOKOnly
Case 3 lIcon = vbInformation + vbOKOnly
Case 4 lIcon = vbExclamation + vbOKCancel
End Select
MessBox = MsgBox(pMess, lIcon, Mess(0))
End Function
Sub Quit
Set TCS = Nothing
Set FSO = Nothing
Wscript.Quit
End SubКод: Выделить всё
'Массив недопустимых символов. Заменяем их указанным ниже символом
CharArr = Array(Chr(10), Chr(13), "\", "/")
'Символ для замены
Const ReplaceChar = "_"Это хоть сейчас:Tol!k писал(а):Нельзя ли сделать замену подстроки ... на тот же ReplaceChar?
Код: Выделить всё
'Массив недопустимых символов. Заменяем их указанным ниже символом
CharArr = Array(Chr(10), Chr(13), "", "/", "Спёрто с http://www.site.com/")