View previous topic :: View next topic |
Author |
Message |
Tol!k

Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Mon Jun 23, 2008 20:40 Post subject: |
|
|
Гм. Все супер. Только в ТЗ было:
Tol!k wrote: |
в буфере обмена: приставка;
| .
Ключевое слово - в БУФЕРЕ обмена. |
|
Back to top |
|
 |
LocKtaR-o-DarK

Joined: 12 Aug 2005 Posts: 349 Location: Москва
|
(Separately) Posted: Wed Jun 25, 2008 18:27 Post subject: |
|
|
Tol!k
ну что же, решаемо
чисто на скрипте писать не было времени
содержимое буфера обмена контролируй сам _________________
 |
|
Back to top |
|
 |
LocKtaR-o-DarK

Joined: 12 Aug 2005 Posts: 349 Location: Москва
|
(Separately) Posted: Wed Jul 02, 2008 13:02 Post subject: |
|
|
обновил скрипт, ссылка та же _________________
 |
|
Back to top |
|
 |
Tol!k

Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Sun Jul 13, 2008 18:07 Post subject: |
|
|
команда for ... do ren ... (и прямо на кнопке, и в скрипте вызываемом с кнопки) дает это:
Access violation at address 00407275. Read of address 00000000.
Please report this error to the Author,
with a description of what you were doing when this error occured!
Continue execution?
После нажатия ОК файлы переименовываются и ТС работает как буд-то так и надо.
ТС 7.03, WinXP SP2
P.S. скрытые файлы не должны переименовываться? |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2226 Location: Москва, Россия
|
(Separately) Posted: Mon Jul 14, 2008 11:00 Post subject: |
|
|
Tol!k wrote: | команда for ... do ren ... (и прямо на кнопке, и в скрипте вызываемом с кнопки) дает это:
Access violation at address 00407275. Read of address 00000000. |
Вряд ли такая ошибка выдается на команды ДОС. Скорее всего (у меня так было) глючит надстройка на оболочку.
У тебя в свойствах папок\файлов (Alt+Enter) дополнительных (не дефолтных) закладок нет?
LocKtaR-o-DarK
Мне кажется, что использовать одновременно и vbs, и batch не очень красиво. Перепиши чтение списка файлов на vbs через
Code: | For Each F In Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0), 1).ReadAll, vbNewLine) |
Tol!k
Предлагаю еще один способ решения задачи.
Для этого понадобятся Script Helper и Script Content Plugin.
Для Script Content Plugin добавляем в скрипте возрат еще одной колонки (например, Result1):
Code: | '============================
' Колонка 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 выделяешь файлы\папки, выполняешь команду группового переименования (Ctrl+M) и в поле "Маска для имени файла" по своему усмотрению используешь тэг "[=script.Result1]". _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
 |
LocKtaR-o-DarK

Joined: 12 Aug 2005 Posts: 349 Location: Москва
|
(Separately) Posted: Thu Jul 24, 2008 15:51 Post subject: |
|
|
Tol!k
для того, чтобы отследить ошибку, надо переписывать команду (сценарий, скрипт) так, чтобы он(а) писала в файл отчёта или выводить ошибки команд в консоль
это называется отладкой и попахивает геммороем
возможно у тебя файлы заняты каким-то процессом
используй unlocker для определения этого варианта
как работает вариант скрипт+сценарий?
Batya
согласен, что не очень красиво, но, все-таки, довольно просто и работоспособно
а дальше?
твой код читает список файлов, в конце которого пустая строка
как в этом случае поведёт себя команда переименования (перемещения) надо тестировать
поэтому надо делать проверку на пустую строку или переписывать код
опять же для вставки маски переименования надо вызывать туеву хучу объектов или юзать regexp
мне лично это немного впадлу
но если напишешь, буду только рад _________________
 |
|
Back to top |
|
 |
Tol!k

Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
|
Back to top |
|
 |
LocKtaR-o-DarK

Joined: 12 Aug 2005 Posts: 349 Location: Москва
|
(Separately) Posted: Fri Jul 25, 2008 16:00 Post subject: |
|
|
Tol!k
1. проверь название vbs-файла
оно не должно совпадать с названиями команд
так, возможна ошибка при работе кода если файл будет называться ren или rename или еще как-то
для сценариев и скриптов необходимо задавать уникальные имена, не совпадающие с командами
скрипт
Код:
' В качестве команды указываем путь к скрипту
' допускаетcя использование %commander_path%
' Параметры кнопки: %L
' Автор: LocKtaR-o-DarK™
If WScript.Arguments.Count=0 Then
MsgBox "Не заданы параметры!",,"Переименование файлов по маске из буфера"
WScript.Quit
End If
CreateObject("WScript.Shell").Run "c:\renbm.cmd "&WScript.Arguments(0)&" """&CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")&"" ,0
c:\renbm.cmd замени на свой путь, допускается использование %commander_path%
сценарий
Код:
@echo off
chcp 1251>nul
for /f "delims=" %%a in (%1) do ren "%%a" """"%2_%%~nxa""""
еще один момент, путь запуска у кнопки должен быть пустым _________________
 |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2226 Location: Москва, Россия
|
(Separately) Posted: Mon Jul 28, 2008 14:48 Post subject: |
|
|
LocKtaR-o-DarK
Ну, как говорится, "Хозяин - барин".
Я, правда, не понял о каких масках файлов ты говоришь.
... Вообщем написал vbs-скрипт.
В скрипте используется Script Helper.
Code: | '======================================================================
' Переименование выделенных файлов\папок -
' Добавление в начало имени текста из буфера обмена
' Параметры вызова из 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 |
_________________ Нет, я не сплю. Я просто медленно моргаю.
Last edited by Batya on Mon Jan 12, 2009 13:12; edited 1 time in total |
|
Back to top |
|
 |
Tol!k

Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Fri Aug 01, 2008 11:38 Post subject: Заработало |
|
|
LocKtaR-o-DarK, Batya, обновился до ТК 7.04 - Access violation исчез
:пиво: :баян: :гопак:
Всем спасибо!
ЗЫ
кажется, ТК раньше времени удалял свои временные файлы, а потом их не находил. |
|
Back to top |
|
 |
Tol!k

Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Sat Jan 10, 2009 21:01 Post subject: |
|
|
Batya
В скрипте можно заменять отдельные символы
Code: | 'Массив недопустимых символов. Заменяем их указанным ниже символом
CharArr = Array(Chr(10), Chr(13), "\", "/")
'Символ для замены
Const ReplaceChar = "_" |
Нельзя ли сделать замену подстроки типа "Спёрто с http://www.site.com/" на ничего или хотя-бы на тот же ReplaceChar? |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2226 Location: Москва, Россия
|
(Separately) Posted: Sun Jan 11, 2009 12:05 Post subject: |
|
|
Tol!k wrote: | Нельзя ли сделать замену подстроки ... на тот же ReplaceChar? |
Это хоть сейчас: Code: | 'Массив недопустимых символов. Заменяем их указанным ниже символом
CharArr = Array(Chr(10), Chr(13), "\", "/", "Спёрто с http://www.site.com/") |
Если нужно, могу дополнить скрипт массивом удаляемых строк (символов). _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
 |
Tol!k

Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Sun Jan 11, 2009 19:49 Post subject: |
|
|
Batya wrote: | Это хоть сейчас |
Batya wrote: | Если нужно, могу дополнить скрипт массивом удаляемых строк (символов). | Да, было бы здОрово. |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2226 Location: Москва, Россия
|
(Separately) Posted: Mon Jan 12, 2009 13:15 Post subject: |
|
|
Tol!k wrote: | Да, было бы здОрово. |
Готово.
См. исходный скрипт.
На имена переменных (например, "Char") можно внимание не обращать  _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
 |
Tol!k

Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Mon Jan 12, 2009 22:28 Post subject: |
|
|
Batya, спасибо. |
|
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
|