Windows PowerPro чудит в скриптах

Те, кто ей начинают пользоваться, уже не в силах остановиться! Она может все. Или почти все!

Сообщение Ergo » Сб июн 07, 2003 12:47 pm

Объясняю ситуацию. Написал пару скриптов, но некоторые из них мистически делают совершенно не понятное. Например вот этот скрипт (он создает в каждой папке из указанной в аргументе папки плейлист, состоящий из всех mp-файлов данной папки. очень удобно). Так вот. При его выполнении, открывается окно Debug в котором перечисляются все папки. Но в этом скрипте я в упор, например не вижу слова debug. У кого какие идеи?

Код: выделить все
; (c) Ergo. Directory PLaylist Maker
; run as .parser("D:\My music") to playlist D:\My music
; run as .parser("D:\My music", "1") to do the same with absolute paths
Ergo_Temp = pprofolder ++ "Scripts\winamp\allfiles.tmp"
ErgoFolders = pprofolder ++ "Scripts\winamp\mp3folders.lst"
; устанавливаем пути к временным файлам
handle = File.Open(Ergo_Temp , "w")
file.allfiles (arg(1), "file.writeline(handle,'"|'")", "1")
file.close(handle)
; создаем файл в котором перечисленны все файлы и папки из указанного каталога
handle = File.Open(Ergo_Temp, "r")
; еще раз открываем этот файл, но теперь уже только для чтения
fw = File.Open(ErgoFolders, "w")
; создадим еще один временный файл, в котором перечислим все вложенные каталоги
; из указанного в параметре каталога
str_before ="No matter"
if (handle > 0) Do
   str = File.Readline(handle)
; читаем первую строку, а дальше запускаем цикл пока не закончится файл
   for (lineNum=1;1;LineNum=LineNum+1)
 if (File.Eof(handle))
    break  
 str = File.Readstring(handle)
 if (not (str == "0")) Do
    str= select(str,revindex(str,"\")-1)
    if (not (str == str_before)) Do
   ErgoName = str ++ "\" ++remove (str,revindex(str,"\")) ++ ".m3u"
   fd = File.Open(ErgoName , "w")
   ForMoveScript = remove (str,revindex(str,"\")) ++ "=" ++ str
   file.writeline(fw, ForMoveScript)
   fName = str ++ "\*.mp3"
   if (fd > 0) Do
      if (arg(2) == "1") Do
     file.allfiles (fName, "file.writeline(fd,'"|'")")
      Else
     file.allfiles (fName, "file.writeline(fd, file.nametype('"|'"))")
      Endif
      file.close(fd)
   Endif
   str_before = str
    endif
 endif
   endfor
   file.writeline(fw, "sep'r&New Folder=.newfolder")
   file.closeall
endif
C:\P\SOUNDS\end.wav


На этом мистика не заканчивается. Вот еще один скрипт. Его смысл в чем. Играет Winamp. Я решаю, что определенную песню необходимо перенести в другую папку и запускаю его. В результате должно появиться меню из папок, в которые я могу перенести играющий файл, выбираю одну из них и после подтверждения файл переносится. Но мистика заключается в том, что после того, как файл перенесен меню с выбором каталога для переноса появляется повторно. Но я не могу в упор найти с какого дуба ему появляться повторно???

Код: выделить все
; (c) Ergo. Данный скрипт перемещает проигрываемую композицию в выбранный каталог
; весьма полезен при сортировке вашей фонотеки

; Указываем каталог с вашими mp3-файлами:
Maindir = "D:\My Music"

; Редактирование кода ниже не рекомендуется, особенно, если вы не знаете,
; что делаете.

Script_folder = pprofolder ++ "Scripts\Winamp"
ErgoFolders = Script_folder ++ "\folders.tmp"

; Подскрипт проверки кэша директорий. Кэш директорий позволяет осуществлять отображение
; списка директорий на 1-3 секунды быстрее, поэтому скрипт использует кэш.
if (file.validpath(ErgoFolders)) Do
   .move@showmenu
Else
   gAnswer = MessageBox("yesno question", "Не найден кэш директорий.'rГенерировать?")
   If (gAnswer == 6) Do
 .move@refresh
   Else
 Quit
   Endif
Endif


; Проверяем запущен ли Winamp. Если нет - выдаем сообщение

@showmenu
if (winamp.running) do
; Получаем полный путь к проигрываемому файлу
   value = winamp.track("cur", "filename")
; Открываем меню поддиректорий
   folderName = filemenu(ErgoFolders)
   if (not (folderName == "")) Do
 if (folderName == ".newfolder") Do
    Exec NewFolder
    File.delete (ErgoFolders)
 Else
    uAnswer = Messagebox ("yesno question","Переместить файл &(value) 'r в каталог &(folderName)?")
    If (uAnswer == 6) Do
   winamp.playback("next")
   Bar Format Bar !` refresh
    ;Wait Sleep 2000
   file.move (value, folderName)
   winamp.pls("refresh")
   Quit
    Else
   Quit
    Endif
 Endif
   Else
 Messagebox("ok", "Ошибка!")
   Endif
Else
   Messagebox ("ok", "Winamp не запущен!")
Endif

file.delete(bat_path)
; file.delete(ErgoFolders)
Quit

; Теперь необходимо проверить наверняка ли был перенесен файл
;fileName = remove (value,revindex(value,"\"))
;Debug &(fileName)


; Обновление списка директорий. Вызывается как .refresh@move
@refresh
   bat_path = Script_folder ++ "\listdir.bat"
   file.delete(bat_path)
   bat_cmd = "dir '"" ++ Maindir ++ "'" /ad /b /s >" ++ ErgoFolders
   exec tofile &(bat_path) &(bat_cmd)
   do (bat_path, "*hide", "")
<!--coloro:purple--><span style="color:purple"><!--/coloro--><!--sizeo:1--><span style="font-size:8pt;line-height:100%"><!--/sizeo-->I can't stop using<a href="http://wincmd.ru" target="_blank">Total Commander</a> <!--sizec--></span><!--/sizec--><!--colorc--></span><!--/colorc-->
Ergo
Полковник
 
Сообщений: 1357
Зарегистрирован: Чт мар 28, 2002 12:42 pm
Откуда: Brest Fortress
Пункты репутации: 0

Сообщение Gregory » Сб июн 07, 2003 1:33 pm

<!--QuoteBegin--Ergo+Jun 7 2003, 14:47--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>QUOTE (Ergo @ Jun 7 2003, 14:47)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->открывается окно Debug в котором перечисляются все папки
<!--QuoteEnd--></td></tr></table><span class='postcolor'><!--QuoteEEnd-->
Наверное это глюк новой версии PowerPro при работе c file.allfiles, у меня file.allfiles("c:\windows")
пишет в окно Debug

Код: выделить все
c:\windows\*.* c:\windows\*.*


Раньше такого не было.
Gregory
Капитан
 
Сообщений: 156
Зарегистрирован: Пн мар 03, 2003 7:28 pm
Откуда: Киев
Пункты репутации: 0

Сообщение Reuben » Вс июн 08, 2003 9:13 am

2Ergo
Gregory прав, это мусор от новой версии file.dll
а что касается второго скрипта, попробуй поставить quit непосредственно перед процедурами, потому что тот quit что стоит у тебя сейчас, находится под действием Else :
Код: выделить все
if (file.validpath(ErgoFolders)) Do
   .move@showmenu
Else
   gAnswer = MessageBox("yesno question", "Не найден кэш директорий.'rГенерировать?")
   If (gAnswer == 6) Do
          .move@refresh
   Else
          Quit
   Endif
Endif


и не выполняется, когда выполняется .move@showmenu
<span style='color:purple'>
Ugly girl is better than nothing
Nothing is better than pretty girl
</span>
Reuben
Подполковник
 
Сообщений: 532
Зарегистрирован: Ср дек 04, 2002 8:59 am
Откуда: Jerusalem
Пункты репутации: 0


Вернуться в Windows PowerPro

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

cron