Script Request
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Batya, спасибо! как всегда выручаешь, есть правда несколько пожеланий по улучшению скрипта:
1. возможность добавления ещё замен, т.е. создания списка
soft_not_tested=soft_on_dvd
mp3_not_sorted=mp3_on_dvd
и т.д.
актуально и в том случае, когда хочется открыть не только "soft_on_dvd" из "soft_not_tested", а также "soft_not_tested" из "soft_on_dvd"
2. возможность выбора поведения скрипта в случае когда папки с предпологаемым путём нет
вариант 1: создать папку по предполагаемуму пути
вариант 2: такой, какой существует сейчас и первоначально о нём просил, т.е. открывается возможный нижний уровень
3. если путь активной вкладки не содержит ни одного из указанных папок, то лучше чтобы никак действий скрипт не производил (в данном случае в соседней папке открывается либо корневой каталог диска (если содержаться пробелы в пути активной вкладки) либо тот же путь)
самое приоритетное пожелание 1ое, остальные не столь значимы
1. возможность добавления ещё замен, т.е. создания списка
soft_not_tested=soft_on_dvd
mp3_not_sorted=mp3_on_dvd
и т.д.
актуально и в том случае, когда хочется открыть не только "soft_on_dvd" из "soft_not_tested", а также "soft_not_tested" из "soft_on_dvd"
2. возможность выбора поведения скрипта в случае когда папки с предпологаемым путём нет
вариант 1: создать папку по предполагаемуму пути
вариант 2: такой, какой существует сейчас и первоначально о нём просил, т.е. открывается возможный нижний уровень
3. если путь активной вкладки не содержит ни одного из указанных папок, то лучше чтобы никак действий скрипт не производил (в данном случае в соседней папке открывается либо корневой каталог диска (если содержаться пробелы в пути активной вкладки) либо тот же путь)
самое приоритетное пожелание 1ое, остальные не столь значимы
Добавляй, сколько хочешь:laburj писал(а):1. возможность добавления ещё замен, т.е. создания списка
soft_not_tested=soft_on_dvd
mp3_not_sorted=mp3_on_dvd
Код: Выделить всё
' Массив заменяемых значений
Repl.Add "soft_not_tested", "soft_on_dvd"
Repl.Add "mp3_not_sorted", "mp3_on_dvd"А вот с этим сложнее. Замена части пути производится последовательно в порядке заполнения массива Repl. Сделать , как ты хочешь можно, но тогда это будет предполагать возможность только одной замены в одном пути. Т.е. если хоть раз что-то нашли, то прекращаем поиск. Так устроит?laburj писал(а):актуально и в том случае, когда хочется открыть не только "soft_on_dvd" из "soft_not_tested", а также "soft_not_tested" из "soft_on_dvd"
А сейчас это разве не работает?laburj писал(а):вариант 2: такой, какой существует сейчас и первоначально о нём просил, т.е. открывается возможный нижний уровень
Это можно. Вариант работы прописать жетстко в скрипте или передавать параметром?laburj писал(а):вариант 1: создать папку по предполагаемуму пути
Нет, я не сплю. Я просто медленно моргаю.
да, устроит! больше одной замены в пути и не требуется!Batya писал(а):тогда это будет предполагать возможность только одной замены в одном пути. Т.е. если хоть раз что-то нашли, то прекращаем поиск. Так устроит?
этот вариант работает, я просто написал, какие возможные варианты хотелось бы видетьBatya писал(а):А сейчас это разве не работает?
принципиальной разницы нет, удобнее в использовании думаю вариант с передаваемым параметром, но пусть будет так, как легче сделатьBatya писал(а):Это можно. Вариант работы прописать жетстко в скрипте или передавать параметром?
Этого не должно быть. У тебя в параметрах "%P" в кавычках?laburj писал(а):в данном случае в соседней папке открывается либо корневой каталог диска (если содержаться пробелы в пути активной вкладки)
Хотелки реализованы - поправлен исходный скрипт.
Сделал через переменную в скрипте - IsCreate может принимать значения True\False.laburj писал(а):принципиальной разницы нет, удобнее в использовании думаю вариант с передаваемым параметром, но пусть будет так, как легче сделать
Нет, я не сплю. Я просто медленно моргаю.
ты прав, кавычки не поставил..Batya писал(а):Этого не должно быть. У тебя в параметрах "%P" в кавычках?
спасибо, всё работает гуд!Batya писал(а):Хотелки реализованы - поправлен исходный скрипт.
очень удобно использовать скрипт, когда не помнишь точно в какой находится папке: в папке с протестированным софтом или нет/ в папке с прослушенной музыкой или нет..
Сделал здесь. Только в переделанном варианте может глючить со "сдвоенными" параметрами.Tol!k писал(а):2. Нужна возможность задания порядкового номера разделителя, который при обработке имени файла будет преобразован в "". Делать это передаваемыми параметром, например так
Код:
01 для получения abc_de\abc_de_fghi_jk.ext
1 для получения abc\abc_de_fghi_jk.ext
111 для получения abc\de\fghi\abc_de_fghi_jk.ext
011 для получения abc_de\fghi\abc_de_fghi_jk.ext
Нет, я не сплю. Я просто медленно моргаю.
Ну конечно. Опечатался.Tol!k писал(а):Э-э, со сдвоенными разделителями?
Добавлено:
Да, забыл написать. В новом варианте должно нормально работать, если один разделитель состоит из символов, набор которых уже есть в другом разделителе. Например, будет работать при разделителях " -- \ - \--\-". Только перечень разделителей надо указывать в порядке от более сложного к более простому.
Нет, я не сплю. Я просто медленно моргаю.
- Моторокер
- Сообщения: 1517
- Зарегистрирован: Пт май 06, 2005 08:22
- Откуда: г. Пермь (читается Перьмь)
- Контактная информация:
Сообщения про изменение имён файлов со скобами отделены в тему.
плагины для Total Commander, статьи Graphics Converter; NSCopy; SEO HTML; KillOK; Плагин на Delphi
ПармаСруб - строительство домов и бань в Перми
ПармаСруб - строительство домов и бань в Перми
Приветствую всех.Batya писал(а):Код:'=======================================================
' Создание текстового файла с содержимым буфера обмена
'=======================================================
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
При запуске открывается окно:
Бyфep oбмeнa coдepжит тeкcт.
Coздaть фaйл descript.txt c coдepжимым бyфepa oбмeнa?
Варианты ответа - Дa - Heт
Можно ли сделать чтобы не выводилось окно а сразу создавался текстовой файл с содержимым буфера обмена?
И ещё один вопрос:
Как сделать кнопку создать ярлык (рабочий стол), без Ярлык для "название программы", а только название программы?
Спасибо.
Добрый день, имеется вот такой срипт, который добавляет в начало файла текущую дату:
' Copyright (c) 2006, Volniy
Option Explicit
Dim FSO, StreamFile, theFile
Set FSO = CreateObject("Scripting.FileSystemObject")
Set StreamFile = FSO.OpenTextFile(WScript.Arguments(0), 1)
Do While Not StreamFile.AtEndOfStream
Set theFile = FSO.GetFile(StreamFile.ReadLine)
Dim M,D
M=Month(Date): If M<10 Then M= "0" & M
D=Day(Date): If D<10 Then D= "0" & D
theFile.Name = Year(Date) & "." & M & "." &D&"_" & theFile.Name
Loop
Set StreamFile = Nothing
Set FSO = Nothing
Wscript.Quit()
Файл создается вида:
2010.01.25_файл1.zip
но если такой уже существует, то есть если применить скрипт к файлу файл1.zip, то выскакивает ошибка "файл уже существует",
как бы сделать так, чтобы при наличии файла с создаваемым именем создавался файл 2010.01.25_2_файл1.zip, а если есть и такой, то 2010.01.25_3_файл1.zip и так далее.
' Copyright (c) 2006, Volniy
Option Explicit
Dim FSO, StreamFile, theFile
Set FSO = CreateObject("Scripting.FileSystemObject")
Set StreamFile = FSO.OpenTextFile(WScript.Arguments(0), 1)
Do While Not StreamFile.AtEndOfStream
Set theFile = FSO.GetFile(StreamFile.ReadLine)
Dim M,D
M=Month(Date): If M<10 Then M= "0" & M
D=Day(Date): If D<10 Then D= "0" & D
theFile.Name = Year(Date) & "." & M & "." &D&"_" & theFile.Name
Loop
Set StreamFile = Nothing
Set FSO = Nothing
Wscript.Quit()
Файл создается вида:
2010.01.25_файл1.zip
но если такой уже существует, то есть если применить скрипт к файлу файл1.zip, то выскакивает ошибка "файл уже существует",
как бы сделать так, чтобы при наличии файла с создаваемым именем создавался файл 2010.01.25_2_файл1.zip, а если есть и такой, то 2010.01.25_3_файл1.zip и так далее.
Замени строкуSVM писал(а):Можно ли сделать чтобы не выводилось окно а сразу создавался текстовой файл с содержимым буфера обмена?
Код: Выделить всё
Btn = MsgBox(Mess, vbYesNo + vbQuestion, Title) Код: Выделить всё
Btn = vbYesНет, я не сплю. Я просто медленно моргаю.
Bubek писал(а):как бы сделать так, чтобы при наличии файла с создаваемым именем создавался файл 2010.01.25_2_файл1.zip, а если есть и такой, то 2010.01.25_3_файл1.zip и так далее.
Код: Выделить всё
' Copyright (c) 2010, Volniy
Option Explicit
Dim FSO, StreamFile, theFile
Dim M,D, sDate, Cnt : Cnt = 2
Set FSO = CreateObject("Scripting.FileSystemObject")
Set StreamFile = FSO.OpenTextFile(WScript.Arguments(0), 1)
Do While Not StreamFile.AtEndOfStream
Set theFile = FSO.GetFile(StreamFile.ReadLine)
M=Month(Date): If M<10 Then M= "0" & M
D=Day(Date): If D<10 Then D= "0" & D
sDate = Year(Date) & "." & M & "." & D &"_"
If FSO.FileExists(FSO.BuildPath(theFile.ParentFolder, sDate & theFile.Name)) Then
Do While FSO.FileExists(FSO.BuildPath(theFile.ParentFolder, sDate & CStr(Cnt) _
& "_" & theFile.Name)) = True
Cnt = Cnt + 1
Loop
theFile.Name = sDate & CStr(Cnt) & "_" & theFile.Name
Else
theFile.Name = sDate & theFile.Name
End If
Loop
Set theFile = Nothing
Set StreamFile = Nothing
Set FSO = Nothing
WScript.Quit()