Script Request

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Аватара пользователя
fa1con
Сообщения: 162
Зарегистрирован: Сб авг 19, 2006 00:33

Сообщение fa1con »

Нужно 2а скрипта:
1. То же что и cm_CopyNetNamesToClip (копировать полное имя файла), только нужно все пробелы в пути и имени заменть на %20 (это что б писать на форуме ссылки на файлы с моего ФТП.)

+ к этому ещё класно было бы заменять кирилицу по такому же принципу. Но это не обязательно.

2. Скрипт для перехода в каталог, на который указывает софт-линк. http://forum.wincmd.ru/viewtopic.php?t=5551

Заранее спасибо.
LA_
Сообщения: 31
Зарегистрирован: Чт дек 07, 2006 09:21

Сообщение LA_ »

возможно ли сделать следующее:
при нажатии Ctrl+V в активной панели если в буфере обмена содержится текст, то выдавать запрос-подтверждение, и если человек ответил "да", то автоматически создать файл с именем descript.txt и с содержимым из буфера обмена (без открытия созданного файла)?
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

fa1con
Только сейчас увидел этот пост.
1. Уже выполнялось - Преобразование FTP ссылок.
2. Пока не знаю, как в vbs можно получить источник софт-линка.

LA_
Ctrl+V это принципиально?
Я могу сделать скрипт, выполняющий требуемое, но вешать его на Ctrl+V (если это вообще возможно) не рекоммендую.
Аватара пользователя
fa1con
Сообщения: 162
Зарегистрирован: Сб авг 19, 2006 00:33

Сообщение fa1con »

Batya
Большое спасибо, посмотрю.
Аватара пользователя
Zorroz
Сообщения: 308
Зарегистрирован: Чт дек 16, 2004 10:40
Откуда: Россия, Иркутская обл., г. Ангарск

Сообщение Zorroz »

А можно ли реализовать с помощью скриптов такую вещь. В буфере содержится ip адрес, нужно в командной строке выполнить команду cd \\ip адрес. Но отображение консоли отключено.
Когда ангелу обрезают крылья, он учится летать на метле...
LA_
Сообщения: 31
Зарегистрирован: Чт дек 07, 2006 09:21

Сообщение LA_ »

Batya,
нет, Ctrl+V не принципиально - устроит любой вариант.
заранее спасибо огромное!

зы. имхо обязательна проверка на содержимое буфера - если не текст, то ничего делать не надо, а то если в буфере будет картинка и не будет проверки, то скрипт вывалится с ошибкой.
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

То же что и cm_CopyNetNamesToClip (копировать полное имя файла), только нужно все пробелы в пути и имени заменть на %20 (это что б писать на форуме ссылки на файлы с моего ФТП.)
ClipFileList и ClipListDialog.
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

LA_
vbs-скрипт, использующий Script Helper:

Код: Выделить всё

'=======================================================
' Создание текстового файла с содержимым буфера обмена
'=======================================================

Option Explicit
Dim FileName
'========== Изменяемые параметры =======================
FileName  = "descript.txt" 'Имя создаваемого файла
'=======================================================
Dim TCS, Clip, Btn, FSO, OTL, Mess, Title
Set TCS = CreateObject("TCScript.Helper")
Clip    = TCS.GetTextFromClip
Set TCS = Nothing

If Len(Clip) > 0 Then
  Set FSO = CreateObject("Scripting.FileSystemObject")
  If FSO.FileExists(FileName) Then
    Mess = "Буфер обмена содержит текст." & vbNewLine & _
           "Заменить содержимое файла " & FileName & _
           " текстом из буфера обмена?" & vbNewLine
    Title = "Замена содержимого файла"
  Else
    Mess = "Буфер обмена содержит текст." & vbNewLine & _
           "Создать файл " & FileName & _
           " с содержимым буфера обмена?" & vbNewLine
    Title = "Создание текстового файла"
  End If
  Btn = MsgBox(Mess, vbYesNo + vbQuestion, Title)
  If Btn = 7 Then 'Кнопка No
    Set FSO = Nothing
    WScript.Quit
  End If
Else
  WScript.Quit
End If

Set OTL = FSO.OpenTextFile(FileName, 2, True)
OTL.Write Clip
OTL.Close

Set OTL = Nothing
Set FSO = Nothing
WScript.Quit
Аватара пользователя
funduk
Сообщения: 1515
Зарегистрирован: Вт авг 16, 2005 16:00
Откуда: Санкт-Петербург

Сообщение funduk »

Есть утилита auCDtect, мне её надо вызывать с параметрами "-v -m0 %P%N", т.к. списков ВНЕ своей директории она не поддерживает. (Она списки поддерживает как *.wav, т.е. вызывать прогу надо из папки с wav-файлами, чтобы она словила их все)
Итак, мне нужна кнопка, принимающая параметры "-v -m0 %L" и преобразующая их в серию вызовов "aucdtect <параметры> ..." где вместо "..." идёт дозапись в может быть несуществующий файл Check.txt. (Хотя я могу сделать и так, что он всегда существует и перед началом первой записи пуст).

Подозреваю, что это можно сделать через bat-файл.
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

funduk
А MakeBat разве не это делает?

Добавлено. Хотя, если нужно сразу запустить то и батничек тоже можно.
типа такого

Код: Выделить всё

for /F "tokens=*" %%i in (%1) do auCDtect -v -m0 "%%i" "..."
Аватара пользователя
funduk
Сообщения: 1515
Зарегистрирован: Вт авг 16, 2005 16:00
Откуда: Санкт-Петербург

Сообщение funduk »

"..." мне тоже нужно ;)
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

funduk
А сказать что именно нужно - это уже моветон? :wink: Или мы придерживаемся религии "Краткость - сестра таланта"?

Тогда, буду краток:

Код: Выделить всё

>>Check.txt
Аватара пользователя
funduk
Сообщения: 1515
Зарегистрирован: Вт авг 16, 2005 16:00
Откуда: Санкт-Петербург

Сообщение funduk »

Тогда надо, чтобы check.txt находился в одной папке с первым файлом в списке (если это невозможно через батник, то я гарантирую, что все файлы в одной папке).

К тому же, у меня в путях есть русские буквы, и они не хэндляццо (я заменил твой "do auCDtect -v -m0 "%%i"" на "do cmd /k c:\Tools\AuCDtect\auCDtect.exe -v -m0 "%%i" >>check.txt" (вообще в результате присутствует зачем-то "1>>check.txt" - с единицей!).

Дело в том, что даже при запускании c:\Tools\AuCDtect\auCDtect.exe -v -m0 %p%n >"%p%n".txt вывод в файл не идёт (прога показывает прогресс и вывод обламывается слишком рано - в файл пишется информация как если бы прогу без параметров запускали), зато если запустить cmd /k c:\Tools\AuCDtect\auCDtect.exe -v -m0 %p%n >"%p%n".txt, то вывод идёт нормально.
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

funduk писал(а):Тогда надо, чтобы check.txt находился в одной папке с первым файлом в списке (если это невозможно через батник, то я гарантирую, что все файлы в одной папке).
Нет, по первому файлу не выйдет. Check.txt будет в текущей папке коммандера.
funduk писал(а):(вообще в результате присутствует зачем-то "1>>check.txt" - с единицей!).
Не понял - в каком результате это присутствует?
И вообще, я что-то не усекаю - в конечном счете, оно работает или нет? Если нет, то что именно не работает.
"Иван Семеныч, перестаньте говорить загадками - вы меня изводите" © Жванецкий.
Аватара пользователя
funduk
Сообщения: 1515
Зарегистрирован: Вт авг 16, 2005 16:00
Откуда: Санкт-Петербург

Сообщение funduk »

Эмммм, ты мог бы скачать эту программу и попробовать её в деле на любом wav-файле. Без твоего собственного участия ты навряд ли поймёшь, КАК работает программа, КАК она выводит результат и когда она это делает.
Я тебе пытался объяснить: она показывает "прогресс" - анализирует файл, процент увеличивается, после этого идёт запись в файл, который после ">".

Пусть есть файл "D:\Музыка (не сортирована)\###temp\01. Collage.wav" и две кнопки:

1:

Код: Выделить всё

TOTALCMD#BAR#DATA
cmd /k c:\Tools\AuCDtect\auCDtect.exe
-v -m0 %p%n >"%p%n".txt
C:\WINDOWS\system32\shell32.dll,40
auCDtect
c:\Tools\AuCDtect

-1
2:

Код: Выделить всё

TOTALCMD#BAR#DATA
c:\Tools\AuCDtect\auCDtect.exe
-v -m0 %p%n >"%p%n".txt
C:\WINDOWS\system32\shell32.dll,40
auCDtect
c:\Tools\AuCDtect\

-1
При нажатии на первую получаю файл "D:\Музыка (не сортирована)\###temp\01COLL~1.WAV.txt" с содержимым

Код: Выделить всё

auCDtect: CD records authenticity detector, version 0.8.2
Copyright (c) 2004 Oleg Berngardt. All rights reserved.
Copyright (c) 2004 Alexander Djourik. All rights reserved.
------------------------------------------------------------
Processing file:	[01. Collage.wav]
Detected average hi-boundary frequency: 2.076892e+004 Hz
Detected average lo-boundary frequency: 1.720896e+004 Hz
Detected average hi-cut frequency: 2.143518e+004 Hz
Detected average lo-cut frequency: 1.146007e+004 Hz
Maximum probablis boundary frequency: 2.142300e+004 Hz
Coefficient of nonlinearity of a phase: 1.314379e-001
First order smothness: 5.023087e-001
Second order smothness: 5.527704e-001

------------------------------------------------------------
This track looks like CDDA with probability 100%

При этом в консоли во время работы утилы видно следующее:

Код: Выделить всё

Data analysis:          [7%]
(процент растёт), а в конце, естественно, следующее:

Код: Выделить всё

Data analysis:          [100%]
c:\Tools\AuCDtect>
И файл "D:\Музыка (не сортирована)\###temp\01COLL~1.WAV.txt" появляется только после этого.

При нажатии на вторую получаю мигнувшее окошко, в котором, если приглядеться, виден результат запуска aucdtect.exe с неправильными параметрами/без параметров - т.е. просто справочная инфа (она дальше в посте появится).

Пусть теперь есть третья кнопка

Код: Выделить всё

TOTALCMD#BAR#DATA
"D:\Музыка (не сортирована)\###temp\bla.bat"
%L
C:\Program Files\Total Commander\TOTALCMD.EXE,2
bla
D:\Музыка (не сортирована)\###temp\

-1
, вызывающая твой батник в таком виде (есть cmd /k):

Код: Выделить всё

for /F "tokens=*" %%i in (%1) do cmd /k c:\Tools\AuCDtect\auCDtect.exe -v -m0 "%%i" >>check.txt
Выделяю один этот файл, получаю такой вывод:

Код: Выделить всё

D:\Музыка (не сортирована)\###temp>for /F "tokens=*" %i in (C:\DOCUME~1\9335~1\L
OCALS~1\Temp\CMD21EC.tmp) do cmd /k c:\Tools\AuCDtect\auCDtect.exe -v -m0 "%i"
1>>check.txt

D:\Музыка (не сортирована)\###temp>cmd /k c:\Tools\AuCDtect\auCDtect.exe -v -m0
"D:\╠єч√ър (эх ёюЁЄшЁютрэр)\###temp\01. Collage.wav"  1>>check.txt

На последней пустой строке стоит курсор,появился файл "D:\Музыка (не сортирована)\###temp\check.txt" с содержимым

Код: Выделить всё

auCDtect: CD records authenticity detector, version 0.8.2
Copyright (c) 2004 Oleg Berngardt. All rights reserved.
Copyright (c) 2004 Alexander Djourik. All rights reserved.
------------------------------------------------------------
Usage:	auCDtect [commands/options] (track.wav|*.wav)
------------------------------------------------------------
commands:
------------------------------------------------------------
	--	read data from stdin
	-d	summary conclusion for set of tracks
	-v	verbose mode
	-h	this help
------------------------------------------------------------
options:
------------------------------------------------------------
	-mS	detect mode S=[0..40], default 8
		0 - slow and most accurate
		40 - fast, but less accurate
------------------------------------------------------------
For more information please visit: http://www.true-audio.com


D:\Музыка (не сортирована)\###temp>
При этом батник не завершился, т.к. я не смог удалить файл "D:\Музыка (не сортирована)\###temp\check.txt". Написал exit, окошко закрылось, файл смог удалить.

Теперь та же кнопка вызывает такой батник (без cmd /k):

Код: Выделить всё

for /F "tokens=*" %%i in (%1) do c:\Tools\AuCDtect\auCDtect.exe -v -m0 "%%i" >>check.txt
и получаю файл "D:\Музыка (не сортирована)\###temp\check.txt" с содержимым

Код: Выделить всё

auCDtect: CD records authenticity detector, version 0.8.2
Copyright (c) 2004 Oleg Berngardt. All rights reserved.
Copyright (c) 2004 Alexander Djourik. All rights reserved.
------------------------------------------------------------
Usage:	auCDtect [commands/options] (track.wav|*.wav)
------------------------------------------------------------
commands:
------------------------------------------------------------
	--	read data from stdin
	-d	summary conclusion for set of tracks
	-v	verbose mode
	-h	this help
------------------------------------------------------------
options:
------------------------------------------------------------
	-mS	detect mode S=[0..40], default 8
		0 - slow and most accurate
		40 - fast, but less accurate
------------------------------------------------------------
For more information please visit: http://www.true-audio.com

, окошко консоли, естественно, закрывается.

ЗЫ: в случае с твоим батником я выделял тот единственный файл "D:\Музыка (не сортирована)\###temp\01. Collage.wav" правой кнопкой (т.е. выделение было не только курсором).
Ответить