Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Script Request
Goto page Previous  1, 2, 3 ... 10, 11, 12 ... 40, 41, 42  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
ADv



Joined: 03 Mar 2005
Posts: 47
Location: Украина

Post (Separately) Posted: Tue Oct 20, 2009 17:22    Post subject: Reply with quote

день добрый. стоит такая задача (тип файлов = mp3):
есть папка Artist - Album, в ней нн-ое количество треков (обычно 10-15 - стандартный мп3-альбом)
нужно:
заархивировать все мп3 и cover.jpg в каталоге в архив с названием папки, чтобы вышло
Code:
Artist - Album.zip\01. ***. mp3


а еще лучше если бы с помощью какой-нить консольной утилиты скрипт сам получал из первой попавшейся мп3-шки в каталоге теги Исполнительи Альбом и архивировал все содержимое каталога в только что полученные Исполнитель - Альбом.zip
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Wed Oct 21, 2009 10:07    Post subject: Reply with quote

ADv wrote:
заархивировать все мп3 и cover.jpg в каталоге в архив с названием папки
http://forum.wincmd.ru/viewtopic.php?p=54819#54819
Back to top
View user's profile Send private message
laburj



Joined: 07 Mar 2005
Posts: 186

Post (Separately) Posted: Fri Oct 23, 2009 01:39    Post subject: Reply with quote

Batya, спасибо большое за скрипт "Создание текстового файла с содержимым буфера обмена", очень полезен

а можно ли изменить скрипт так, чтобы название создаваемого файла состояло не из указанного количества слов, а из целой первой строчки содержимого буфера до перехода на следующую строку?

и как отключить сообщение о предложении создать файл, чтобы файл создавался без подтверждения?
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2229
Location: Москва, Россия

Post (Separately) Posted: Fri Oct 23, 2009 10:47    Post subject: Reply with quote

laburj wrote:
а можно ли изменить скрипт так, чтобы название создаваемого файла состояло не из указанного количества слов, а из целой первой строчки содержимого буфера до перехода на следующую строку?
В функции GetFileName вместо строки
Code:
  GetFileName = GetSomeWords(lText, NumWords)
напиши
Code:
  GetFileName = Left(lText, InStr(lText, vbNewLine) - 1)


laburj wrote:
и как отключить сообщение о предложении создать файл, чтобы файл создавался без подтверждения?
Нужно удалить или закомментировать (поставить знак апострофа в начале) строки:
Code:
Btn = MsgBox(Text, vbYesNo + vbQuestion, Title)
If Btn = 7 Then Quit 0

_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
laburj



Joined: 07 Mar 2005
Posts: 186

Post (Separately) Posted: Fri Oct 23, 2009 11:33    Post subject: Reply with quote

Batya wrote:
напиши
Code:
  GetFileName = Left(lText, InStr(lText, vbNewLine) - 1)


в этом случае возникает сообщение с ошибкой:

Строка: 64
Символ: 3
Ошибка: Недопустимый вызов или аргумент процедуры: 'Left'
Код: 800A0005
Источник: Ошибка выполнения Microsoft VBScript

Скрипт для модификации я брал из этого поста:
http://forum.wincmd.ru/viewpost.php?p=52478
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2229
Location: Москва, Россия

Post (Separately) Posted: Fri Oct 23, 2009 12:39    Post subject: Reply with quote

laburj wrote:
в этом случае возникает сообщение с ошибкой

Прошу прщения, написал не проверяя.

Функция GetFileName должна описываться так:
Code:
Function GetFileName(pText)
  Dim lText, lPos, Char
  lPos = InStr(pText, vbNewLine)
  If lPos > 0 Then
    lText = Left(pText, lPos - 1)
  Else
    lText = pText
  End If
  For Each Char In CharArr
    lText = Replace(lText, Char, ReplaceChar)
  Next
  GetFileName = Trim(lText)
End Function

_________________
Нет, я не сплю. Я просто медленно моргаю.


Last edited by Batya on Fri Oct 23, 2009 13:39; edited 1 time in total
Back to top
View user's profile Send private message
laburj



Joined: 07 Mar 2005
Posts: 186

Post (Separately) Posted: Fri Oct 23, 2009 12:49    Post subject: Reply with quote

Batya
всё отлично, только в конце названия файла остаётся пробел, можно его убрать?

и можно ли изменить скрипт так, чтобы созданный файл в конце открывался?
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2229
Location: Москва, Россия

Post (Separately) Posted: Fri Oct 23, 2009 13:43    Post subject: Reply with quote

Batya wrote:
всё отлично, только в конце названия файла остаётся пробел, можно его убрать?
Добавил "Trim" - см. выше.

laburj wrote:
и можно ли изменить скрипт так, чтобы созданный файл в конце открывался?
В конце основного тела скрипта после строки "FSO.OpenTextFile(FileName, 2, True).Write Clip" добавь:
Code:
CreateObject("WScript.Shell").Run FileName, 7, False

_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
laburj



Joined: 07 Mar 2005
Posts: 186

Post (Separately) Posted: Fri Oct 23, 2009 16:18    Post subject: Reply with quote

Batya wrote:
В конце основного тела скрипта после строки "FSO.OpenTextFile(FileName, 2, True).Write Clip" добавь:
Code:
CreateObject("WScript.Shell").Run FileName, 7, False

возникает сообщение с ошибкой:

Строка: 40
Символ: 1
Ошибка: Не удаётся найти указанный файл.
Код: 80070002
Источник: (null)
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2229
Location: Москва, Россия

Post (Separately) Posted: Fri Oct 23, 2009 17:04    Post subject: Reply with quote

laburj
Упс... Забыл про кавычки. Надо так:
Code:
CreateObject("WScript.Shell").Run """" & FileName & """", 7, False

_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
laburj



Joined: 07 Mar 2005
Posts: 186

Post (Separately) Posted: Fri Oct 23, 2009 18:16    Post subject: Reply with quote

Batya
а создаваемый файл может открываться не в фоне? в данном случае приходиться окно активировать
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2229
Location: Москва, Россия

Post (Separately) Posted: Fri Oct 23, 2009 22:17    Post subject: Reply with quote

laburj
Code:
CreateObject("WScript.Shell").Run """" & FileName & """", 1, False

_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
laburj



Joined: 07 Mar 2005
Posts: 186

Post (Separately) Posted: Fri Oct 23, 2009 23:54    Post subject: Reply with quote

Batya, спасибо огромное! всё вроде как работает! будем тестить) поставил скрипт на хоткей ctrl+alt+t
Back to top
View user's profile Send private message
laburj



Joined: 07 Mar 2005
Posts: 186

Post (Separately) Posted: Fri Nov 06, 2009 01:29    Post subject: Reply with quote

хотелось бы скрипт, после запуска которого в противоположной панели на новой вкладке открывался слегка изменённый путь активной вкладки.

поясню на примере:
если активная вкладка d:\soft_not_tested\security\Dr.Web\LiveCD
то я хочу, чтобы открылась вкладка
d:\soft_on_dvd\security\Dr.Web\ LiveCD

условия замены д.б. прописаны заранее
в данном случае:
soft_not_tested=soft_on_dvd

если же такой папки не существует (d:\soft_on_dvd\security\Dr.Web\ LiveCD), то открывается возможный нижний уровень, к примеру: d:\soft_on_dvd\security
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2229
Location: Москва, Россия

Post (Separately) Posted: Mon Nov 09, 2009 19:00    Post subject: Reply with quote

laburj wrote:
хотелось бы скрипт, после запуска которого в противоположной панели на новой вкладке открывался слегка изменённый путь активной вкладки.

Примерно такой vbs:
Code:
'=============================================================================
' Открытие в противоположной панели на новой вкладке TC
'   слегка изменённого пути активной вкладки.
'
' Параметры:
' {текущая папка}
'
' Пример параметров при вызове из TC:
' "%P"
'
' Автор - Batya
'=============================================================================
Option Explicit
Dim Repl, IsCreate
Set Repl = CreateObject("Scripting.Dictionary")
'======== Изменяемые параметры ===============================================
' Массив заменяемых значений
Repl.Add "soft_not_tested", "soft_on_dvd"
Repl.Add "Пример 1", "Пример 2"
IsCreate = False 'Признак создания папки, если полученный путь не существует
'=============================================================================
Dim Mess, FSO, WSH, FF, IsFound
SetMess
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSH = CreateObject("WScript.Shell")

On Error Resume Next
CheckParam:CheckErr
On Error GoTo 0
Main
Quit 0

Sub Main
  Dim K, TC
  IsFound = False
  For Each K In Repl.Keys
    If InStr(1, FF, K, vbTextCompare) > 0 Then
      FF = Replace(FF, K, Repl(K), 1, -1, vbTextCompare)
      IsFound = True
      Exit For
    End If
  Next
  If IsFound Then
    If IsCreate Then
      BuildTree FF
    Else
      FF = ExistsLevel(FF)
    End If
    TC = """" & GetPath("%Commander_Path%\totalcmd.exe") & """"
    WSH.Run TC & " /O /S /T /R=""" & FF & """", 1, False
  End If
End Sub

Sub SetMess
  Set Mess = CreateObject("Scripting.Dictionary")
  With Mess
    .Add 0,  "Открытие в TC вкладки с изменённым путём"
    .Add 1,  "Не указаны параметры!"
  End With
End Sub

Sub CheckParam
  If WScript.Arguments.Count = 0 Then Err.Raise vbObjectError + 1, "", Mess(1)
  FF = GetPath(WScript.Arguments(0))
End Sub

Function GetPath(pPath)
  GetPath = FSO.GetAbsolutePathName(WSH.ExpandEnvironmentStrings(pPath))
End Function

Function ExistsLevel(pPath)
  If FSO.FileExists(pPath) Or FSO.FolderExists(pPath) Then
    ExistsLevel = pPath
  Else
    ExistsLevel = ExistsLevel(FSO.GetParentFolderName(pPath))
  End If
End Function

'Создание дерева папок
Sub BuildTree(pFolder)
  Dim lPF
  lPF = FSO.GetParentFolderName(pFolder)
  If Not FSO.FolderExists(lPF    ) Then BuildTree lPF
  If Not FSO.FolderExists(pFolder) Then FSO.CreateFolder pFolder
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
  End Select
  MessBox = MsgBox(pMess, lIcon, Mess(0))
End Function

'Проверка, нет ли ошибок
Sub CheckErr
  If Err.Number <> 0 Then
    MessBox Mess(0) & vbNewLine & vbNewLine & "Возникла ошибка № " &_
      Err.Number & ":" & vbNewLine & Err.Description, 1
    Quit Err.Number
  End If
End Sub

Sub Quit(pQuitCode)
  Set Repl = Nothing
  Set Mess = Nothing
  Set WSH  = Nothing
  Set FSO  = Nothing
  WScript.Quit pQuitCode
End Sub

_________________
Нет, я не сплю. Я просто медленно моргаю.


Last edited by Batya on Wed Nov 11, 2009 12:50; edited 1 time in total
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3 ... 10, 11, 12 ... 40, 41, 42  Next
Page 11 of 42

 
Jump to:  
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