Проблема с массивом

Обсуждение программ nnCron и nnCron LITE

Проблема с массивом

Postby jen » Mon, 21 Aug 2006, 15:32

Имеются 15 файлов.Имена файлов не меняются. Необходимо делать одни и те же операции с этими файлами каждый день. Нельзя ли использовать массив с именами этих файлов?Спасибо
jen
 
Posts: 10
Joined: Thu, 10 Aug 2006, 16:08

Postby Lynx » Mon, 21 Aug 2006, 16:28

Можно. В помощи все описано. Тебе такой ответ нужен был? ;)
Либо дальше сам думай, либо хотя бы скажи, приблизительно что тебе с этими файлами надо делать.
User avatar
Lynx
 
Posts: 321
Joined: Thu, 04 May 2006, 20:07
Location: Уфа

Postby jen » Tue, 22 Aug 2006, 08:47

Я по сети подключаюсь к каталогам qq-1, ss-2 и т.д. Беру архивы из каталогов qq-1,ss-2 и копирую их в отдельные каталоги. Например, из qq-1 копирую в zzz, из ss-2 в ttt. Имена каталогов известны и меняться не будут. Имена файлов одинаковые.. Затем их там разархивирую, проверяю и т.д.(код на 55 строчках). Дело в том, что операции с файлами одни и те же. Надо передать только имя каталога, из которого я копирую и имя каталога, в который надо скопировать файлы. Пока было 3 каталога, работало три задачи, в которых были прописаны пути. Но сейчас надо делать такое же с 15. А потом обещают будет еще больше. Может можно задать в массиве имена каталогов, и потом использовать их в цикле?
jen
 
Posts: 10
Joined: Thu, 10 Aug 2006, 16:08

Postby Lynx » Tue, 22 Aug 2006, 09:25

Проще будет сделать слово для обработки. Т.е. слово, на входе два имени каталога - это слово будет обрабатывать твои файлы/папки.
И соответственно в задаче потом будешь писать, например, просто:
Code: Select all
S" имя каталога1" S" имя каталога2" <твое слово>

А автоматизировать такую строчку будет значительно проще :)
User avatar
Lynx
 
Posts: 321
Joined: Thu, 04 May 2006, 20:07
Location: Уфа

Postby jen » Tue, 22 Aug 2006, 09:49

Только начал изучать Форт. А задачу требуют выполнить быстро. Поэтому извини за глупые вопросы. Но я не понимаю, если я создам слово, все равно мне надо будет создавать массив и цикл. Или нет? Если не трудно, можешь набросать кусок кода?
jen
 
Posts: 10
Joined: Thu, 10 Aug 2006, 16:08

Postby Lynx » Tue, 22 Aug 2006, 11:17

Насчет массива не знай, проще, наверное, будет работать с файликом каким-нибудь, в котором будет записаны строки вида:
Code: Select all
qq-1 zzz
ss-2 ttt

и т.д. Считываешь строчку файла, выполняешь функцию и т.д.

Вот тебе задача из помощи на эту тему:
Code: Select all
#( test_read_by_line
NoActive
\ Построчно (в цикле) считываем файл
\ test.txt в массив list-contents и
\ выводим каждую строчку на экран.
\ Строки в файле не должны быть длиннее 255 символов.
VARIABLE list-file
CREATE list-contents 258 ALLOT
Action:
    S" test.txt" R/O OPEN-FILE-SHARED THROW list-file !
    \ записываем строку во вторую ячейку массива list-content
    BEGIN list-contents 1+ 255 list-file @ READ-LINE THROW WHILE
    \ На стеке осталось число прочитанных символов.
    \ Сохраняем его в первую ячейку массива, чтобы
    \ получить строку со счетчиком
    list-contents C!

    \ тут как раз добавляешь свои действия
    \ строка будет находиться в переменной list-contents

    MSG: "%list-contents COUNT%"
    REPEAT
    DROP
    list-file @ CLOSE-FILE DROP
)#
User avatar
Lynx
 
Posts: 321
Joined: Thu, 04 May 2006, 20:07
Location: Уфа

Postby SeMa » Tue, 22 Aug 2006, 13:32

А как по мне, то проще для задачи с неизменяемыми условиями/параметрами записать "жесткие" команды.
И зачем на каждый каталог задавать отдельную задачу?
Просто по мере необходимости добавлять в задачу новые строки.
Code: Select all
Action:
...
FILE-COPY: "\\server1\qq-1\*.*" "\\server2\zzz\"
FILE-COPY: "\\server1\ss-1\*.*" "\\server2\ttt\"
...

То же самое, что и с чтением имен каталогов из файла, но не универсально, без использования переменных и промежуточных действий. В данном случае в универсальности не вижу смысла.
Компьютер ─ устройство, разработанное для ускорения и автоматизации человеческих ошибок
User avatar
SeMa
 
Posts: 637
Joined: Fri, 15 Apr 2005, 12:49
Location: Украина

Postby Lynx » Tue, 22 Aug 2006, 14:09

Имена файлов одинаковые.. Затем их там разархивирую, проверяю и т.д.(код на 55 строчках).

Пока было 3 каталога, работало три задачи, в которых были прописаны пути. Но сейчас надо делать такое же с 15. А потом обещают будет еще больше.

М.... 15*55=? больше*55=? ;)
Проще именно написать слово и потом прогонять им.
User avatar
Lynx
 
Posts: 321
Joined: Thu, 04 May 2006, 20:07
Location: Уфа

Postby SeMa » Tue, 22 Aug 2006, 15:46

Имена файлов одинаковые.. Затем их там разархивирую, проверяю и т.д.(код на 55 строчках).

Да, может я чего и не понял. Я имел ввиду саму задачу копирования выполнять одним куском. Это в каждой задаче 55 строк текста? Тогда конечно лучше стелать универсальный обработчик.
Компьютер ─ устройство, разработанное для ускорения и автоматизации человеческих ошибок
User avatar
SeMa
 
Posts: 637
Joined: Fri, 15 Apr 2005, 12:49
Location: Украина

Postby jen » Wed, 23 Aug 2006, 08:10

посоветуйте как разделить слова: qq-1 и zzz, ss-1 и ttt. Делаю построчное чтение из файла. У меня переменные qq-1 zzz и ss-1 ttt. Как произвести копирование
START-APPW: "xcopy d:\qq-1\1.rar e:\zzz ? Может надо считывать из двух файлов? В одном qq-1 и ss-1, в другом zzz и ttt. Либо два массива (или списки использовать). Только как работать с элементами массива пока не разобрался. :o
jen
 
Posts: 10
Joined: Thu, 10 Aug 2006, 16:08

Postby Lynx » Wed, 23 Aug 2006, 08:25

Не заморачивайся с массивами. Читай из файла/файлов.
User avatar
Lynx
 
Posts: 321
Joined: Thu, 04 May 2006, 20:07
Location: Уфа

Postby unreal666 » Wed, 23 Aug 2006, 09:06

jen
Ты бы полностью свою задачу описал бы, что тебе надо делать (что куда копировать и что потом делать с этими скопированными файлами).
User avatar
unreal666
 
Posts: 83
Joined: Fri, 25 Nov 2005, 00:07
Location: Россия, Владивосток

Postby SeMa » Wed, 23 Aug 2006, 12:32

jen
Посмотри здесь: http://www.nncron.ru/forums/viewtopic.php?t=1590
Там на второй странице есть пример обработки похожей строки с несколькими разделенными данными.
Компьютер ─ устройство, разработанное для ускорения и автоматизации человеческих ошибок
User avatar
SeMa
 
Posts: 637
Joined: Fri, 15 Apr 2005, 12:49
Location: Украина

Postby jen » Fri, 25 Aug 2006, 11:14

спасибо за советы. Пытаюсь понять как мне разделить эти слова. Теперь задача немного изменилась. Мне надо делить не два слова,а четыре. Например
sss ddd 192.168.1.53 \\192.168.1.53\backup
ttt mmm 192.168.112.5 \\192.168.112.5\backup
yyy rrr 192.168.112.45 \\192.168.112.45\backup
и т.д.
Для unreal666: я проверяю наличие каталога на одном компе, если он есть проверяю наличие необходимых архивов в нем. Если его там нет, иду на другие компы - проверяю там. Потом копирую, разархивирую и т.д. Все не опишешь. И так для 15 баз данных. В перспективе их будет больше. Поэтому хочу автоматизировать процесс.
jen
 
Posts: 10
Joined: Thu, 10 Aug 2006, 16:08

Postby Lynx » Fri, 25 Aug 2006, 12:27

Ну если у тебя строчки такого типа, то т.к. в
Code: Select all
sss ddd 192.168.1.53 \\192.168.1.53\backup

адрес один и тот же, то можно сократить даже в три слова. Или у тебя могут быть разные адреса?

А чтение и анализ строки - см ответ SeMa
User avatar
Lynx
 
Posts: 321
Joined: Thu, 04 May 2006, 20:07
Location: Уфа

Next

Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 2 guests

cron