Script Request
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
WindR
Мда. Думал, это только у меня косячит. Посмотрю, как оно с нажатием кнопки будет. Но без TCFS2 тут уже, увы, не обойтись.
Мда. Думал, это только у меня косячит. Посмотрю, как оно с нажатием кнопки будет. Но без TCFS2 тут уже, увы, не обойтись.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
По запросу:
Код: Выделить всё
'============================= VBS =============================
' Выделение всех объектов между двумя выделенными (включительно)
' Условие: необходим компонент TCScript.dll 1.0.0.14+
' Параметры: %S [/p:<ms>]
' Ключ /p:<ms> задаёт задержку в миллисекундах (40 по умолчанию)
'========================================== Автор: Flasher © ===
Option Explicit : Dim A, TCH, M, Check : Set A = WSH.Arguments
Set TCH = CreateObject("TCScript.Helper")
If A.UnNamed.Count <> 2 Then Quit "Выберите 2 объекта!"
M = A.Named("p") : If IsEmpty(M) Then M = 40
With TCH
.Pause = 0 : .LockTC True : Cm(2049)(2056)
Check = StrComp(A(0), .GetInfo("SN"), 1) <> 0
If Check Then Cm(2053) End If : Cm(544)
If Check Then Cm(2056) : .SendKeyStroke "+^{HOME}" : .Sleep M
Cm(2057) : Check = StrComp(A(1), .GetInfo("SN"), 1)
If Check = 0 Then Cm(544) Else Cm(2054)(2937) : .SendKeyStroke "+{End}" : .Sleep M
Cm(525) : If Check <> 0 Then Cm(2054) End If : .LockTC False
End With: Set TCH = Nothing
Function Cm(n) TCH.SendCommand n, 1 : Set Cm = GetRef("Cm") End Function
Sub Quit(Msg)
With TCH
Dim Color : .LockTC False
Color = .INIRead(.MainINI, "Colors", "BackColor", "16777215")
If Color = "-1" Then Color = 16777215
CreateObject("Internet.HHCtrl").TextPopup Msg,_
.INIRead(.MainINI, "AllResolutions", "FontNameTip", "Verdana") &","&_
.INIRead(.MainINI, "AllResolutions", "FontSizeTip", "10"), 20, 10,_
Abs(.INIRead(.MainINI,"Colors","ForeColor","-1")), Color
WSH.Sleep 2000 : Set TCH = Nothing : WSH.Quit
End With
End SubАвтору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Не могу победить, жесть какая-то
https://yadi.sk/i/bwzhiNW-CkogkA
https://yadi.sk/i/bwzhiNW-CkogkA
kirimbay
Снизу памятки чётко расписано, в какой форме должно быть обращение при проблемах, в т. ч. как вставлять информацию из подобных окон. Вы до сих пор её так и не прочли?
Снизу памятки чётко расписано, в какой форме должно быть обращение при проблемах, в т. ч. как вставлять информацию из подобных окон. Вы до сих пор её так и не прочли?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Простым скриптом таких результатов не достичь. Чтобы окна не менялись или изменялись.
Ведь каждая программа сама определяет, сколько экземпляров она может работать. И как она сама себя ведёт.
Со сложными программами, там ещё сложнее. Типа Microsoft Office. Там уже идут системные вызовы DDE.
Короче, тут много ньюансов. Тут надо писать мощную программу, которая будет собирать всю требуемую ей статистику.
Написал я небольшой скрипт. На языке Jscript. Я не знаю, как он будет работать на операционных системах новее, чем семёрка.
Короче в заголовке скрипта есть небольшое описание.
Главное - правильно написать параметры.
Сохраняете это текст куда-нибудь. Даёте имя, например MoveToOther.js. И расширение должно быть JS.
Создаёте пользовательскую команду в usercmd.ini, в панели инструментов или в меню Старт.
Если появятся какие-нибудь ошибки, то скажете, что пишет или скрин под коврик положите.
Ведь каждая программа сама определяет, сколько экземпляров она может работать. И как она сама себя ведёт.
Со сложными программами, там ещё сложнее. Типа Microsoft Office. Там уже идут системные вызовы DDE.
Короче, тут много ньюансов. Тут надо писать мощную программу, которая будет собирать всю требуемую ей статистику.
Написал я небольшой скрипт. На языке Jscript. Я не знаю, как он будет работать на операционных системах новее, чем семёрка.
Короче в заголовке скрипта есть небольшое описание.
Главное - правильно написать параметры.
Код: Выделить всё
// Команда:
// "C:\Folder\MoveToOther.js"
// Параметр:
// 17 "%T" "%P%S"
// Кавычки обязательны.
// Skip == 0
// Count == 1
// Rewrite == 2
// Wait == 4
// View == 8 Normal
// View == 16 Turned
// View == 32 Maximaze
// В начале первый аргумент равен нулю.
// Складываем флаги, чтобы получилось одно число. По группам. Пример:
// Я хочу, чтобы при существованиии такого же файла в целевой директории включился счётчик
// (к первому аргументу прибавляю 1), // или хочу перезаписать существующий файл (прибавляю 2).
// В противном случае, ничего не произойдёт.
//
// Дальше. Я хочу, чтобы файлы запустились одновременно. Я к предыдущему итогу должен прибавить 4.
// Дальше. Я хочу окно в нормальном виде (прибавляю 8), или я хочу видеть в свёрнутом (прибавляю 16),
// или в максимальном виде (прибавляю 32).
//
// В итоге, получаю сумму флагов. Например 17. Что значит, окно в свёрнутом виде, и прибавляется счётчик,
// при совпадении имён.
// И первому аргументу присваиваю этот итог.
function funcion(){var g=WScript.Arguments.length;if (g<3){WScript.Echo
('Wrong Parameteres. \n\nExample: \n\n\n\nCommand:'+' \n\n"C:\\Kemp\\MoveAndRun.js"\n\n\nArguments:\n\n17 "%T" "%P%S"');
WScript.Quit();};var z=WScript.Arguments(1),b=parseInt(WScript.Arguments(0),10),
k=new ActiveXObject("Scripting.FileSystemObject"),u=new ActiveXObject("WScript.Shell");if
(z.substr(z.length-1,z.length)=='\\'){z=z.substr(0,z.length-1);};z+="\\";if (!k.FolderExists(z)){
WScript.Echo('Target Folder not Exist. \n\n\n'+z+" \n");k=u=0;WScript.Quit();};var i=2,n=w=r=t="",q=h=0;for(;i<g;i++)
{n=WScript.Arguments(i);q=n.lastIndexOf("\\");w=n.charAt(q);r=n.substr(parseInt(q,10)+1);h=r.lastIndexOf(".")+1;t=
r.substr(h);w=r.substr(0,parseInt(h,10)-1);h=n.substr(0,parseInt(q,10)+1);if (z.toLowerCase()==h.toLowerCase())
{WScript.Echo("Source and Target Folders Identical. \n\n\n"+h+"\n\n"+z+" \n");break;};q=1;h=z+r;if
(k.FileExists(h)){if (b&0x1){while(k.FileExists(h)){q+=1;h=z+w+"_"+q+"."+t;};}else if
(b&0x2){w=k.GetFile(h);if(w.attributes&1){w.attributes=0;WScript.Sleep(100);};k.DeleteFile(h);}else{continue;};};if
(!k.FileExists(n)){continue;};k.MoveFile(n,h);WScript.Sleep(500);t=(b&0x04)?true:false;if(b&0x10)
{w=2;}else if(b&0x20){w=3;}else{w=1;};u.Run(h,w,t);WScript.Sleep(100);};k=u=0;WScript.Quit();};funcion()
Создаёте пользовательскую команду в usercmd.ini, в панели инструментов или в меню Старт.
Если появятся какие-нибудь ошибки, то скажете, что пишет или скрин под коврик положите.
Zmy
Сделал с аргументом 14 (перезаписать, одновременно, в нормальном окне), Параметры: 14 "%T" "%P%S"
в результате срабатывает только на файле под курсором, т.е. по-одному,
с файлами, названными по-русски не работает,
при использовании с JPG выдает ошибку
'Windows Script Host"
Строка: 46
Символ: 39
Ошибка: не удается дождаться процесса
Код: 80020009
Источник: WshShell.Run
Картинки мне форум не дает вставить...
Сделал с аргументом 14 (перезаписать, одновременно, в нормальном окне), Параметры: 14 "%T" "%P%S"
в результате срабатывает только на файле под курсором, т.е. по-одному,
с файлами, названными по-русски не работает,
при использовании с JPG выдает ошибку
'Windows Script Host"
Строка: 46
Символ: 39
Ошибка: не удается дождаться процесса
Код: 80020009
Источник: WshShell.Run
Картинки мне форум не дает вставить...
Посмотрел я, почему при ожидании стандартное средство просмотра фотографий Windows вываливается с ошибкой.
Потому что, оно запускается не просто так, а в процессе-оболчке (в обёртке, как svchost).
Только оно в dllhost.exe.
Т.е., сервер сценариев не может отследить окончание процесса, который назначен, как MIME-средство просмотра такого типа файла.
Измените средство просмотра для изображений по-умолчанию на прогу по-проще, тогда все проблемы исчезнут.
Типа, Imagine.exe или что-то другое.
На счёт руских символов, я вроде поправил. Вот, я даже снял видео.
Поставьте в настройках плеера качество 720.
https://disk.yandex.ru/i/4Tc0wnDBXwgh0w
Потому что, оно запускается не просто так, а в процессе-оболчке (в обёртке, как svchost).
Только оно в dllhost.exe.
Т.е., сервер сценариев не может отследить окончание процесса, который назначен, как MIME-средство просмотра такого типа файла.
Измените средство просмотра для изображений по-умолчанию на прогу по-проще, тогда все проблемы исчезнут.
Типа, Imagine.exe или что-то другое.
На счёт руских символов, я вроде поправил. Вот, я даже снял видео.
Поставьте в настройках плеера качество 720.
https://disk.yandex.ru/i/4Tc0wnDBXwgh0w
Код: Выделить всё
// Команда:
// "C:\Folder\MoveToOther.js"
// Параметр:
// 17 "%T" "%P%S"
// Кавычки обязательны.
// Skip == 0
// Count == 1
// Rewrite == 2
// Wait == 4
// View == 8 Normal
// View == 16 Turned
// View == 32 Maximaze
// В начале первый аргумент равен нулю.
// Складываем флаги, чтобы получилось одно число. По группам. Пример:
// Я хочу, чтобы при существованиии такого же файла в целевой директории включился счётчик (к первому аргументу прибавляю 1),
// или хочу перезаписать существующий файл (прибавляю 2).
// В противном случае, ничего не произойдёт.
//
// Дальше. Я хочу, чтобы файлы запустились одновременно. Я к предыдущему итогу должен прибавить 4.
// Дальше. Я хочу окно в нормальном виде (прибавляю 8), или я хочу видеть в свёрнутом (прибавляю 16), или в максимальном виде (прибавляю 32).
//
// В итоге, получаю сумму флагов. Например 17. Что значит, окно в свёрнутом виде, и прибавляется счётчик, при совпадении имён.
// И первому аргументу присваиваю этот итог.
function funcion(){var g=WScript.Arguments.length;if (g<3){WScript.Echo
('Wrong Parameteres. \n\nExample: \n\n\n\nCommand:'+' \n\n"C:\\Kemp\\MoveAndRun.js"\n\n\nArguments:\n\n17 "%T" "%P%S"');
WScript.Quit();};var z=WScript.Arguments(1),b=parseInt(WScript.Arguments(0),10),
k=new ActiveXObject("Scripting.FileSystemObject"),u=new ActiveXObject("WScript.Shell");if
(z.substr(z.length-1,z.length)=='\\'){z=z.substr(0,z.length-1);};z+="\\";if (!k.FolderExists(z)){
WScript.Echo('Target Folder not Exist. \n\n\n'+z+" \n");k=u=0;WScript.Quit();};var i=2,n=w=r=t="",q=h=0;for(;i<g;i++)
{n=WScript.Arguments(i);q=n.lastIndexOf("\\");w=n.charAt(q);r=n.substr(parseInt(q,10)+1);h=r.lastIndexOf(".")+1;t=
r.substr(h);w=r.substr(0,parseInt(h,10)-1);h=n.substr(0,parseInt(q,10)+1);if (z.toLowerCase()==h.toLowerCase())
{WScript.Echo("Source and Target Folders Identical. \n\n\n"+h+"\n\n"+z+" \n");break;};q=1;h=z+r;if
(k.FileExists(h)){if (b&0x1){while(k.FileExists(h)){q+=1;h=z+w+"_"+q+"."+t;};}else if
(b&0x2){w=k.GetFile(h);if(w.attributes&1){w.attributes=0;WScript.Sleep(100);};k.DeleteFile(h);}else{continue;};};if
(!k.FileExists(n)){continue;};k.MoveFile(n,h);WScript.Sleep(500);t=(b&0x04)?1:0;if(b&0x10)
{w=2;}else if(b&0x20){w=3;}else{w=1;};u.Run('"'+h+'"',w,t);WScript.Sleep(200);};k=u=0;WScript.Quit();};funcion()
- Monarch-LFV
- Сообщения: 360
- Зарегистрирован: Пн июл 22, 2019 13:20
К запросу:
Написал VBS скрипт по переименованию файлов и папок по любым правилам (можно прописывать в правилах свои хотелки):
Сейчас скрипт переименовывает:
- по вашей же регулярке удаляет все небуквы, нецифры и непробелы
- заменяет все подчеркивания "_" на пробелы
- заменяет все двойные, тройные и т.п. пробелы на одиночные пробелы
Написал VBS скрипт по переименованию файлов и папок по любым правилам (можно прописывать в правилах свои хотелки):
Сейчас скрипт переименовывает:
- по вашей же регулярке удаляет все небуквы, нецифры и непробелы
- заменяет все подчеркивания "_" на пробелы
- заменяет все двойные, тройные и т.п. пробелы на одиночные пробелы
Код: Выделить всё
'======================================================================
' Переименовать выделенные объекты по "своим" правилам
' Параметры:
' %WL
'======================================================================
Option Explicit
Dim FSO, objRegEx, FileList, List, F, k, fn, ext, path, i
Set FSO = CreateObject("Scripting.FileSystemObject")
Set objRegEx = CreateObject("VBScript.RegExp")
FileList = WScript.Arguments(0)
List = Split(FSO.OpenTextFile(FileList,,,-1).ReadAll, vbNewLine)
For Each F In List
If F <> "" Then
path = FSO.getparentfoldername(F) & "\"
if FSO.FolderExists(F) then
fn = FSO.GetFolder(F).name ' Имя папки
F=left(F, len(F)-1) ' удаление последнего обратного слэша
k=1
else
fn = FSO.GetBaseName(F) ' Имя файла
ext = "." & FSO.GetExtensionName(F) ' Расширение файла
k=0
end if
' ======= ПРАВИЛА ПЕРЕИМЕНОВАНИЯ ==============================
objRegEx.Pattern = "[^\wА-Яа-яёЁ ]"
objRegEx.Global = True
fn = objRegEx.replace(fn, "")
fn=replace(fn, "_", " ")
for i=1 to 5 ' удаление всех задвоенных, затроенных и т.п. пробелов
fn=replace(fn, " ", " ")
next
' =============================================================
' Непосредственно переименование
if k=1 then
FSO.MoveFolder F, path & fn ' переименование папок
else
FSO.MoveFile F, path & fn & ext ' переименование файлов
end if
End If
Next- ZZZAlexZZZ
- Сообщения: 68
- Зарегистрирован: Сб мар 08, 2014 22:25
Monarch-LFV
Спасибо за скрипт. Можно уточнить: "(можно прописывать в правилах свои хотелки)" - имеется ввиду только в этой части регулярку менять или есть способ внести дополнительные правило (второе, третье, и т.д.)?
Спасибо за скрипт. Можно уточнить: "(можно прописывать в правилах свои хотелки)" - имеется ввиду только в этой части
Код: Выделить всё
objRegEx.Pattern = "[^\wА-Яа-яёЁ ]"