Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Как запустить случайную команду? (http://forum.oszone.net/showthread.php?t=162978)

Pozia 10-01-2010 12:09 1316071

Как запустить случайную команду?
 
Имеется такая команда:

Код:

WinstyleMonitor.exe -LP "%Windir%\Web\Wallpaper\WinStyle (21).jpg"
Как скриптом автоит запустить ее чтобы жирная цифра при каждом запуске скрипта была случайная в заданном интервале, допустим с 01 по 69?

Coutty 10-01-2010 13:17 1316143

Наверное, так:
Код:

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

Цитата:

Цитата Coutty
if $rnd < 10 then »

А зачем проверка, для таких расширений обычно используется StringFormat, и тем более в примере ошибка с кавычками:

Код:

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

Pozia 10-01-2010 14:04 1316197

Цитата:

Цитата Creat0R
в примере ошибка с кавычками »

ничего подобного, ошибки нет. Так должно быть.
Цитата:

Цитата Creat0R
(Random(1, 69))) »

У меня фото имеют запись вида:
Код:

WinStyle (01).jpg
WinStyle (02).jpg
...

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

Coutty 10-01-2010 14:11 1316208

Цитата:

Цитата Pozia
ничего подобного, ошибки нет. Так должно быть. »

В моём коде ошибка с кавычками. Была) Поправил.
Цитата:

Цитата Pozia
Я так думаю фото с цифрами 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 1316209

проверил только что, не работает не один скрипт, даже если вот так записать в автоит без случайных чисел:

Код:

Run("WinstyleMonitor.exe -LP '%Windir%\Web\Wallpaper\WinStyle (10).jpg'")
exit

не работает.

Цитата:

Цитата Creat0R
тем более в примере ошибка с кавычками »

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

так через батник тоже не работает, а так:

Код:

WinstyleMonitor.exe -LP "%Windir%\Web\Wallpaper\WinStyle (10).jpg"
работает через батник

Creat0R 10-01-2010 14:39 1316240

Цитата:

Цитата Pozia
ничего подобного, ошибки нет »

Я это кажется писал Coutty ;)

Цитата:

Цитата Pozia
не работает не один скрипт »

Потому что нужно не одиночные кавычки, а двойные:
Код:

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

Pozia 10-01-2010 14:44 1316244

Ребята, благодарствую!!! Все работает на отлично!!!

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

Creat0R 10-01-2010 15:18 1316277

Цитата:

Цитата Pozia
такое через батник возможно сделать? »

Возможно.

Pozia 10-01-2010 15:23 1316280

Цитата:

Цитата Creat0R
Возможно. »

а не подскажете как? не хочется тему создавать новую такую же, только другом разделе

Creat0R 10-01-2010 15:29 1316285

Цитата:

Цитата Pozia
не подскажете как? »

Примерно так:

Код:

$sBat_Content = _
    '@Echo Off' & @CRLF & _
    'Set iRandom=0' & @CRLF & _
    'Call :Random 1 69' & @CRLF & _
    'If %iRandom% LSS 10 Set iRandom=0%iRandom%' & @CRLF & _
    'Start WinstyleMonitor.exe -LP "%Windir%\Web\Wallpaper\WinStyle %iRandom%.jpg"' & @CRLF & _
    'GoTo :EOF' & @CRLF & _
    ':Random' & @CRLF & _
    ':Loop' & @CRLF & _
    'Set /A Rnd=%Random:~0,1%+%Random:~-2%' & @CRLF & _
    'If %Rnd% LSS %1 GoTo :Loop' & @CRLF & _
    'If %Rnd% GTR %2 GoTo :Loop' & @CRLF & _
    'Set iRandom=%Rnd%'

$sBat_File = @ScriptDir & "\BatFile.bat"

$hFile = FileOpen($sBat_File, 2)
FileWrite($hFile, $sBat_Content)
FileClose($hFile)

Run($sBat_File)


Pozia 10-01-2010 15:32 1316288

Creat0R, не. скриптом автоит как то проще. Спасибо еще раз! :)

Pozia 23-01-2010 00:35 1327402

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

Код:

WinstyleMonitor.exe -LP "%Windir%\Web\Wallpaper\WinStyle (21).jpg"
и цифра в нем всегда бы была случайна в нужном мне интервале

Creat0R 23-01-2010 00:54 1327414

Цитата:

Цитата Pozia
по определенным причинам ваш скрипт не подходит »

Можно узнать по каким, если не секрет конечно? :)

Цитата:

Цитата Pozia
Хотелось бы его модифицировать так чтобы скрипт создавал батник содержания »

А в чём сложность, добавить круглые скобки?

Pozia 23-01-2010 01:04 1327421

Цитата:

Цитата Creat0R
Можно узнать по каким, если не секрет конечно? »

конечно. Моя проблема обсуждается здесь . Mr dUSHA пока не ответил но видимо дело в длине команды. Скрипт почему то портит выполнение в будущем ключа реестра WinstyleMonitor.exe и картинка всегда растягивается. Если запустить команду из батника:

Код:

WinstyleMonitor.exe -LP "%Windir%\Web\Wallpaper\WinStyle (21).jpg"
то все путем.
Цитата:

Цитата Creat0R
А в чём сложность, добавить круглые скобки? »

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

Creat0R 23-01-2010 01:19 1327436

Цитата:

Цитата Pozia
видимо дело в длине команды »

Нет связи, что с батника, что с AutoIt-скрипта, ограничение от этого не исчезнет :)

Цитата:

Цитата Pozia
то все путем »

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

Код:

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

Цитата Pozia
Мне нужно чтобы скрипт не сам выполнял команду а создавал батник со случайной цифрой, а уж батник я запущу руками »

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

Pozia 23-01-2010 01:30 1327443

Цитата:

Цитата Creat0R
Так ведь скрипт создаёт батник, а запуск делается одной строчкой «Run», убираем её и всё »

тупанул я. я говорил о первом скрипте что вы сделали. А последний создает нерабочий батник. При его отработке картинка в логоне сбивается по дефолту. Может поправте его как нить? Или есть идей сделать по другому. Пусть скрипт создает батник только со строчкой:

Код:

WinstyleMonitor.exe -LP "%Windir%\Web\Wallpaper\WinStyle (21).jpg"
и при каждом запуске автоит скрипта он бы создавал новый батник с новой цифрой. А в самом батнике нужна только обозначенная команда

Цитата:

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

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

Creat0R 23-01-2010 02:11 1327454

Цитата:

Цитата Pozia
я говорил о первом скрипте что вы сделали »

Первый скрипт не создаёт батника :dont-know .

Цитата:

Пусть скрипт создает батник только со строчкой
Неужели так сложно адаптировать скрипты в этой теме под нужные требования?

Код:

$sBat_File = @DesktopDir & "\BatFile.bat"
$sBat_Content = 'WinstyleMonitor.exe -LP "%Windir%\Web\Wallpaper\WinStyle (' & StringFormat('%02.f', Round(Random(1, 69))) & ').jpg"'

$hFile = FileOpen($sBat_File, 2)
FileWrite($hFile, $sBat_Content)
FileClose($hFile)


Pozia 23-01-2010 07:48 1327517

Цитата:

Цитата Creat0R
Неужели так сложно адаптировать скрипты в этой теме под нужные требования? »

если со скриптами на Вы и шепотом то сложновато простым подбором команд что то сделать...
Цитата:

Цитата Creat0R
$sBat_File = @DesktopDir & "\BatFile.bat" »

Путь @DesktopDir не понял что значит. Поменял на @ScriptDir и все заработало :) Спасибо!

Creat0R 23-01-2010 13:20 1327650

Цитата:

Цитата Pozia
Путь @DesktopDir не понял что значит »

Это каталог рабочего стола.

Pozia 24-01-2010 17:44 1328657

Цитата:

Цитата Creat0R
Это каталог рабочего стола. »

ща включил комп и увидел батник на рабочем столе. Спасибо за помощь еще раз :)

Pozia 24-01-2010 20:09 1328782

Скрипт
Цитата:

Цитата Creat0R
Потому что нужно не одиночные кавычки, а двойные:
Код:
Run('WinstyleMonitor.exe -LP "%Windir%\Web\Wallpaper\WinStyle (' & StringFormat('%02.f', Round(Random(1, 69))) & ').jpg"') »

все таки работает как надо. Проблема в другом была.

Появилась у меня еще хотелка. Если не сложно помогите. Хотелось бы чтобы интервал случайных чисел задавался не вручную а определялся скриптом сам если ему предварительно указать папку где лежат фото, и по количеству файлов скрипт определял интервал. Или же можно без привязки к числам чтобы в коде:
Код:

WinstyleMonitor.exe -LP "%Windir%\Web\Wallpaper\WinStyle (10).jpg"
имя самой картинки бралось случайным образом из указанной заранее папки.


Время: 10:10.

Время: 10:10.
© OSzone.net 2001-