Показать полную графическую версию : [решено] Как запустить случайную команду?
Имеется такая команда:
WinstyleMonitor.exe -LP "%Windir%\Web\Wallpaper\WinStyle (21).jpg"
Как скриптом автоит запустить ее чтобы жирная цифра при каждом запуске скрипта была случайная в заданном интервале, допустим с 01 по 69?
Наверное, так:
$rnd = Round(Random(1, 69))
if $rnd < 10 then
$rnd = "0" & $rnd
endif
Run("WinstyleMonitor.exe -LP '%Windir%\Web\Wallpaper\WinStyle (" & $rnd & ").jpg'")
if $rnd < 10 then »
А зачем проверка, для таких расширений обычно используется StringFormat, и тем более в примере ошибка с кавычками:
Run (http://www.autoitscript.com/autoit3/docs/functions/Run.htm)("WinstyleMonitor.exe -LP '%Windir%\Web\Wallpaper\WinStyle (" & StringFormat (http://www.autoitscript.com/autoit3/docs/functions/StringFormat.htm)('%02.f', Round (http://www.autoitscript.com/autoit3/docs/functions/Round.htm)(Random (http://www.autoitscript.com/autoit3/docs/functions/Random.htm)(1, 69))) & ").jpg'")
в примере ошибка с кавычками »
ничего подобного, ошибки нет. Так должно быть.
(Random(1, 69))) »
У меня фото имеют запись вида:
WinStyle (01).jpg
WinStyle (02).jpg
...
Я так думаю фото с цифрами 01-09 попадать в случайные числа не будут. Можно поправить скрипт? Или я ошибаюсь?
ничего подобного, ошибки нет. Так должно быть. »
В моём коде ошибка с кавычками. Была) Поправил.
Я так думаю фото с цифрами 01-09 попадать в случайные числа не будут. Можно поправить скрипт? Или я ошибаюсь? »
Специально для того, чтобы фото с цифрами 01-09 попадали, используется StringFormat() в коде Creat0R'а (у меня это по-другому, но я StringFormat не знаю). Без нулей было бы ещё проще (на 1 функцию):
Run("WinstyleMonitor.exe -LP '%Windir%\Web\Wallpaper\WinStyle (" & Round(Random(1, 69))) & ").jpg'")
проверил только что, не работает не один скрипт, даже если вот так записать в автоит без случайных чисел:
Run("WinstyleMonitor.exe -LP '%Windir%\Web\Wallpaper\WinStyle (10).jpg'")
exit
не работает.
тем более в примере ошибка с кавычками »
"WinstyleMonitor.exe -LP %Windir%\Web\Wallpaper\WinStyle (10).jpg"
так через батник тоже не работает, а так:
WinstyleMonitor.exe -LP "%Windir%\Web\Wallpaper\WinStyle (10).jpg"
работает через батник
ничего подобного, ошибки нет »
Я это кажется писал Coutty ;)
не работает не один скрипт »
Потому что нужно не одиночные кавычки, а двойные:
Run (http://www.autoitscript.com/autoit3/docs/functions/Run.htm)('WinstyleMonitor.exe -LP "%Windir%\Web\Wallpaper\WinStyle (' & StringFormat (http://www.autoitscript.com/autoit3/docs/functions/StringFormat.htm)('%02.f', Round (http://www.autoitscript.com/autoit3/docs/functions/Round.htm)(Random (http://www.autoitscript.com/autoit3/docs/functions/Random.htm)(1, 69))) & ').jpg"')
Ребята, благодарствую!!! Все работает на отлично!!!
Creat0R, а такое через батник возможно сделать? Я не подумал сразу, через батник удобнее, если это конечно возможно
такое через батник возможно сделать? »
Возможно.
Возможно. »
а не подскажете как? не хочется тему создавать новую такую же, только другом разделе
не подскажете как? »
Примерно так:
$sBat_Content = _
'@Echo Off' & @CRLF (http://www.autoitscript.com/autoit3/docs/macros.htm#@CRLF) & _
'Set iRandom=0' & @CRLF (http://www.autoitscript.com/autoit3/docs/macros.htm#@CRLF) & _
'Call :Random 1 69' & @CRLF (http://www.autoitscript.com/autoit3/docs/macros.htm#@CRLF) & _
'If %iRandom% LSS 10 Set iRandom=0%iRandom%' & @CRLF (http://www.autoitscript.com/autoit3/docs/macros.htm#@CRLF) & _
'Start WinstyleMonitor.exe -LP "%Windir%\Web\Wallpaper\WinStyle %iRandom%.jpg"' & @CRLF (http://www.autoitscript.com/autoit3/docs/macros.htm#@CRLF) & _
'GoTo :EOF' & @CRLF (http://www.autoitscript.com/autoit3/docs/macros.htm#@CRLF) & _
':Random' & @CRLF (http://www.autoitscript.com/autoit3/docs/macros.htm#@CRLF) & _
':Loop' & @CRLF (http://www.autoitscript.com/autoit3/docs/macros.htm#@CRLF) & _
'Set /A Rnd=%Random:~0,1%+%Random:~-2%' & @CRLF (http://www.autoitscript.com/autoit3/docs/macros.htm#@CRLF) & _
'If %Rnd% LSS %1 GoTo :Loop' & @CRLF (http://www.autoitscript.com/autoit3/docs/macros.htm#@CRLF) & _
'If %Rnd% GTR %2 GoTo :Loop' & @CRLF (http://www.autoitscript.com/autoit3/docs/macros.htm#@CRLF) & _
'Set iRandom=%Rnd%'
$sBat_File = @ScriptDir (http://www.autoitscript.com/autoit3/docs/macros.htm#@ScriptDir) & "\BatFile.bat"
$hFile = FileOpen (http://www.autoitscript.com/autoit3/docs/functions/FileOpen.htm)($sBat_File, 2)
FileWrite (http://www.autoitscript.com/autoit3/docs/functions/FileWrite.htm)($hFile, $sBat_Content)
FileClose (http://www.autoitscript.com/autoit3/docs/functions/FileClose.htm)($hFile)
Run (http://www.autoitscript.com/autoit3/docs/functions/Run.htm)($sBat_File)
Creat0R, не. скриптом автоит как то проще. Спасибо еще раз! :)
Creat0R, по определенным причинам ваш скрипт не подходит. Хотелось бы его модифицировать так чтобы скрипт создавал батник содержания:
WinstyleMonitor.exe -LP "%Windir%\Web\Wallpaper\WinStyle (21).jpg"
и цифра в нем всегда бы была случайна в нужном мне интервале
по определенным причинам ваш скрипт не подходит »
Можно узнать по каким, если не секрет конечно? :)
Хотелось бы его модифицировать так чтобы скрипт создавал батник содержания »
А в чём сложность, добавить круглые скобки?
Можно узнать по каким, если не секрет конечно? »
конечно. Моя проблема обсуждается здесь (http://forum.oszone.net/thread-145914-25.html) . Mr dUSHA пока не ответил но видимо дело в длине команды. Скрипт почему то портит выполнение в будущем ключа реестра WinstyleMonitor.exe и картинка всегда растягивается. Если запустить команду из батника:
WinstyleMonitor.exe -LP "%Windir%\Web\Wallpaper\WinStyle (21).jpg"
то все путем.
А в чём сложность, добавить круглые скобки? »
наверно вы меня не так поняли. Мне нужно чтобы скрипт не сам выполнял команду а создавал батник со случайной цифрой, а уж батник я запущу руками, и думаю проблема должна исчезнуть.
видимо дело в длине команды »
Нет связи, что с батника, что с AutoIt-скрипта, ограничение от этого не исчезнет :)
то все путем »
Возможно нужно расширить переменную?
Run('WinstyleMonitor.exe -LP "' & @WindowsDir & '\Web\Wallpaper\WinStyle (' & StringFormat('%02.f', Round(Random(1, 69))) & ').jpg"')
Мне нужно чтобы скрипт не сам выполнял команду а создавал батник со случайной цифрой, а уж батник я запущу руками »
Так ведь скрипт создаёт батник, а запуск делается одной строчкой «Run», убираем её и всё :)
Так ведь скрипт создаёт батник, а запуск делается одной строчкой «Run», убираем её и всё »
тупанул я. я говорил о первом скрипте что вы сделали. А последний создает нерабочий батник. При его отработке картинка в логоне сбивается по дефолту. Может поправте его как нить? Или есть идей сделать по другому. Пусть скрипт создает батник только со строчкой:
WinstyleMonitor.exe -LP "%Windir%\Web\Wallpaper\WinStyle (21).jpg"
и при каждом запуске автоит скрипта он бы создавал новый батник с новой цифрой. А в самом батнике нужна только обозначенная команда
Возможно нужно расширить переменную? »
это проверю после выходных, нужно систему сносить. на этой уже все испорчено )
я говорил о первом скрипте что вы сделали »
Первый скрипт не создаёт батника :dont-know .
Пусть скрипт создает батник только со строчкой
Неужели так сложно адаптировать скрипты в этой теме под нужные требования?
$sBat_File = @DesktopDir (http://www.autoitscript.com/autoit3/docs/macros.htm#@DesktopDir) & "\BatFile.bat"
$sBat_Content = 'WinstyleMonitor.exe -LP "%Windir%\Web\Wallpaper\WinStyle (' & StringFormat (http://www.autoitscript.com/autoit3/docs/functions/StringFormat.htm)('%02.f', Round (http://www.autoitscript.com/autoit3/docs/functions/Round.htm)(Random (http://www.autoitscript.com/autoit3/docs/functions/Random.htm)(1, 69))) & ').jpg"'
$hFile = FileOpen (http://www.autoitscript.com/autoit3/docs/functions/FileOpen.htm)($sBat_File, 2)
FileWrite (http://www.autoitscript.com/autoit3/docs/functions/FileWrite.htm)($hFile, $sBat_Content)
FileClose (http://www.autoitscript.com/autoit3/docs/functions/FileClose.htm)($hFile)
Неужели так сложно адаптировать скрипты в этой теме под нужные требования? »
если со скриптами на Вы и шепотом то сложновато простым подбором команд что то сделать...
$sBat_File = @DesktopDir & "\BatFile.bat" »
Путь @DesktopDir не понял что значит. Поменял на @ScriptDir и все заработало :) Спасибо!
Путь @DesktopDir не понял что значит »
Это каталог рабочего стола.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC