Страница 11 из 42
Добавлено: Вт окт 20, 2009 17:22
ADv
день добрый. стоит такая задача (тип файлов = mp3):
есть папка Artist - Album, в ней нн-ое количество треков (обычно 10-15 - стандартный мп3-альбом)
нужно:
заархивировать все мп3 и cover.jpg в каталоге в архив с названием папки, чтобы вышло
а еще лучше если бы с помощью какой-нить консольной утилиты скрипт сам получал из первой попавшейся мп3-шки в каталоге теги
Исполнительи
Альбом и архивировал все содержимое каталога в только что полученные
Исполнитель - Альбом.zip
Добавлено: Ср окт 21, 2009 10:07
Tol!k
ADv писал(а):заархивировать все мп3 и cover.jpg в каталоге в архив с названием папки
http://forum.wincmd.ru/viewtopic.php?p=54819#54819
Добавлено: Пт окт 23, 2009 01:39
laburj
Batya, спасибо большое за скрипт "Создание текстового файла с содержимым буфера обмена", очень полезен
а можно ли изменить скрипт так, чтобы название создаваемого файла состояло не из указанного количества слов, а из целой первой строчки содержимого буфера до перехода на следующую строку?
и как отключить сообщение о предложении создать файл, чтобы файл создавался без подтверждения?
Добавлено: Пт окт 23, 2009 10:47
Batya
laburj писал(а):а можно ли изменить скрипт так, чтобы название создаваемого файла состояло не из указанного количества слов, а из целой первой строчки содержимого буфера до перехода на следующую строку?
В функции GetFileName вместо строки
Код: Выделить всё
GetFileName = GetSomeWords(lText, NumWords)
напиши
Код: Выделить всё
GetFileName = Left(lText, InStr(lText, vbNewLine) - 1)
laburj писал(а):и как отключить сообщение о предложении создать файл, чтобы файл создавался без подтверждения?
Нужно удалить или закомментировать (поставить знак апострофа в начале) строки:
Код: Выделить всё
Btn = MsgBox(Text, vbYesNo + vbQuestion, Title)
If Btn = 7 Then Quit 0
Добавлено: Пт окт 23, 2009 11:33
laburj
Batya писал(а):напиши
Код: Выделить всё
GetFileName = Left(lText, InStr(lText, vbNewLine) - 1)
в этом случае возникает сообщение с ошибкой:
Строка: 64
Символ: 3
Ошибка: Недопустимый вызов или аргумент процедуры: 'Left'
Код: 800A0005
Источник: Ошибка выполнения Microsoft VBScript
Скрипт для модификации я брал из этого поста:
http://forum.wincmd.ru/viewpost.php?p=52478
Добавлено: Пт окт 23, 2009 12:39
Batya
laburj писал(а):в этом случае возникает сообщение с ошибкой
Прошу прщения, написал не проверяя.
Функция GetFileName должна описываться так:
Код: Выделить всё
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
Добавлено: Пт окт 23, 2009 12:49
laburj
Batya
всё отлично, только в конце названия файла остаётся пробел, можно его убрать?
и можно ли изменить скрипт так, чтобы созданный файл в конце открывался?
Добавлено: Пт окт 23, 2009 13:43
Batya
Batya писал(а):всё отлично, только в конце названия файла остаётся пробел, можно его убрать?
Добавил "Trim" - см. выше.
laburj писал(а):и можно ли изменить скрипт так, чтобы созданный файл в конце открывался?
В конце основного тела скрипта после строки "FSO.OpenTextFile(FileName, 2, True).Write Clip" добавь:
Код: Выделить всё
CreateObject("WScript.Shell").Run FileName, 7, False
Добавлено: Пт окт 23, 2009 16:18
laburj
Batya писал(а):В конце основного тела скрипта после строки "FSO.OpenTextFile(FileName, 2, True).Write Clip" добавь:
Код: Выделить всё
CreateObject("WScript.Shell").Run FileName, 7, False
возникает сообщение с ошибкой:
Строка: 40
Символ: 1
Ошибка: Не удаётся найти указанный файл.
Код: 80070002
Источник: (null)
Добавлено: Пт окт 23, 2009 17:04
Batya
laburj
Упс... Забыл про кавычки. Надо так:
Код: Выделить всё
CreateObject("WScript.Shell").Run """" & FileName & """", 7, False
Добавлено: Пт окт 23, 2009 18:16
laburj
Batya
а создаваемый файл может открываться не в фоне? в данном случае приходиться окно активировать
Добавлено: Пт окт 23, 2009 22:17
Batya
laburj
Код: Выделить всё
CreateObject("WScript.Shell").Run """" & FileName & """", 1, False
Добавлено: Пт окт 23, 2009 23:54
laburj
Batya, спасибо огромное! всё вроде как работает! будем тестить) поставил скрипт на хоткей ctrl+alt+t
Добавлено: Пт ноя 06, 2009 00:29
laburj
хотелось бы скрипт, после запуска которого в противоположной панели на новой вкладке открывался слегка изменённый путь активной вкладки.
поясню на примере:
если активная вкладка 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
Добавлено: Пн ноя 09, 2009 18:00
Batya
laburj писал(а):хотелось бы скрипт, после запуска которого в противоположной панели на новой вкладке открывался слегка изменённый путь активной вкладки.
Примерно такой vbs:
Код: Выделить всё
'=============================================================================
' Открытие в противоположной панели на новой вкладке 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