PDA

Показать полную графическую версию : [решено] Как запустить случайную команду?


Страниц : [1] 2

Pozia
10-01-2010, 12:09
Имеется такая команда:

WinstyleMonitor.exe -LP "%Windir%\Web\Wallpaper\WinStyle (21).jpg"

Как скриптом автоит запустить ее чтобы жирная цифра при каждом запуске скрипта была случайная в заданном интервале, допустим с 01 по 69?

Coutty
10-01-2010, 13:17
Наверное, так:
$rnd = Round(Random(1, 69))
if $rnd < 10 then
$rnd = "0" & $rnd
endif
Run("WinstyleMonitor.exe -LP '%Windir%\Web\Wallpaper\WinStyle (" & $rnd & ").jpg'")

Creat0R
10-01-2010, 13:38
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'")

Pozia
10-01-2010, 14:04
в примере ошибка с кавычками »
ничего подобного, ошибки нет. Так должно быть.
(Random(1, 69))) »
У меня фото имеют запись вида:
WinStyle (01).jpg
WinStyle (02).jpg
...

Я так думаю фото с цифрами 01-09 попадать в случайные числа не будут. Можно поправить скрипт? Или я ошибаюсь?

Coutty
10-01-2010, 14:11
ничего подобного, ошибки нет. Так должно быть. »
В моём коде ошибка с кавычками. Была) Поправил.
Я так думаю фото с цифрами 01-09 попадать в случайные числа не будут. Можно поправить скрипт? Или я ошибаюсь? »
Специально для того, чтобы фото с цифрами 01-09 попадали, используется StringFormat() в коде Creat0R'а (у меня это по-другому, но я StringFormat не знаю). Без нулей было бы ещё проще (на 1 функцию):
Run("WinstyleMonitor.exe -LP '%Windir%\Web\Wallpaper\WinStyle (" & Round(Random(1, 69))) & ").jpg'")

Pozia
10-01-2010, 14:11
проверил только что, не работает не один скрипт, даже если вот так записать в автоит без случайных чисел:

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"
работает через батник

Creat0R
10-01-2010, 14:39
ничего подобного, ошибки нет »
Я это кажется писал 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"')

Pozia
10-01-2010, 14:44
Ребята, благодарствую!!! Все работает на отлично!!!

Creat0R, а такое через батник возможно сделать? Я не подумал сразу, через батник удобнее, если это конечно возможно

Creat0R
10-01-2010, 15:18
такое через батник возможно сделать? »
Возможно.

Pozia
10-01-2010, 15:23
Возможно. »
а не подскажете как? не хочется тему создавать новую такую же, только другом разделе

Creat0R
10-01-2010, 15:29
не подскажете как? »
Примерно так:


$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)

Pozia
10-01-2010, 15:32
Creat0R, не. скриптом автоит как то проще. Спасибо еще раз! :)

Pozia
23-01-2010, 00:35
Creat0R, по определенным причинам ваш скрипт не подходит. Хотелось бы его модифицировать так чтобы скрипт создавал батник содержания:

WinstyleMonitor.exe -LP "%Windir%\Web\Wallpaper\WinStyle (21).jpg"

и цифра в нем всегда бы была случайна в нужном мне интервале

Creat0R
23-01-2010, 00:54
по определенным причинам ваш скрипт не подходит »
Можно узнать по каким, если не секрет конечно? :)

Хотелось бы его модифицировать так чтобы скрипт создавал батник содержания »
А в чём сложность, добавить круглые скобки?

Pozia
23-01-2010, 01:04
Можно узнать по каким, если не секрет конечно? »
конечно. Моя проблема обсуждается здесь (http://forum.oszone.net/thread-145914-25.html) . Mr dUSHA пока не ответил но видимо дело в длине команды. Скрипт почему то портит выполнение в будущем ключа реестра WinstyleMonitor.exe и картинка всегда растягивается. Если запустить команду из батника:

WinstyleMonitor.exe -LP "%Windir%\Web\Wallpaper\WinStyle (21).jpg"

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

Creat0R
23-01-2010, 01:19
видимо дело в длине команды »
Нет связи, что с батника, что с AutoIt-скрипта, ограничение от этого не исчезнет :)

то все путем »
Возможно нужно расширить переменную?

Run('WinstyleMonitor.exe -LP "' & @WindowsDir & '\Web\Wallpaper\WinStyle (' & StringFormat('%02.f', Round(Random(1, 69))) & ').jpg"')

Мне нужно чтобы скрипт не сам выполнял команду а создавал батник со случайной цифрой, а уж батник я запущу руками »
Так ведь скрипт создаёт батник, а запуск делается одной строчкой «Run», убираем её и всё :)

Pozia
23-01-2010, 01:30
Так ведь скрипт создаёт батник, а запуск делается одной строчкой «Run», убираем её и всё »
тупанул я. я говорил о первом скрипте что вы сделали. А последний создает нерабочий батник. При его отработке картинка в логоне сбивается по дефолту. Может поправте его как нить? Или есть идей сделать по другому. Пусть скрипт создает батник только со строчкой:

WinstyleMonitor.exe -LP "%Windir%\Web\Wallpaper\WinStyle (21).jpg"

и при каждом запуске автоит скрипта он бы создавал новый батник с новой цифрой. А в самом батнике нужна только обозначенная команда

Возможно нужно расширить переменную? »

это проверю после выходных, нужно систему сносить. на этой уже все испорчено )

Creat0R
23-01-2010, 02:11
я говорил о первом скрипте что вы сделали »
Первый скрипт не создаёт батника :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)

Pozia
23-01-2010, 07:48
Неужели так сложно адаптировать скрипты в этой теме под нужные требования? »
если со скриптами на Вы и шепотом то сложновато простым подбором команд что то сделать...
$sBat_File = @DesktopDir & "\BatFile.bat" »
Путь @DesktopDir не понял что значит. Поменял на @ScriptDir и все заработало :) Спасибо!

Creat0R
23-01-2010, 13:20
Путь @DesktopDir не понял что значит »
Это каталог рабочего стола.




© OSzone.net 2001-2012