назначение dcl из команды

Я новичок в ДКЛ.

Я хочу получить вывод команды в переменной и повторять результат один за другим.

filePath=dir /since="time_now" [.SUBDIR]*.PNG/noheader/notrail


person kbang    schedule 15.03.2014    source источник
comment
time_now имеет время в требуемом формате.   -  person kbang    schedule 15.03.2014


Ответы (2)


Это просто не то, как мы катимся с DCL.

Мы не делаем трубы, мы делаем, но не совсем.

DIR/SINCE=NOW ... ничего не даст по определению, так как с этого момента ничего не существует.

Используйте /OUT, чтобы вставить вывод каталога в файл, а затем прочитать и разобрать (F$PARSE и/или F$ELEMENT и/или F$LOC)

Проверьте ПОМОЩЬ ОТКРЫТЬ; ПОМОГИТЕ ПРОЧИТАТЬ [/КОНЕЦ]; ПОМОЩЬ ЛЕКСИЧЕСКАЯ

Гугл для примеров.

Более продвинутые сценарии DCL используют F$PARSE, F$SEARCH и F$FILE(file,CDT), чтобы избежать активации образов и создания временных файлов: $ HELP LEXICAL

Гугл для примеров. Проверьте вчерашнюю запись в стеке обмена?! : OpenVMS - УДАЛИТЬ строку, если ТЕКСТ похож на x

Но если вы только начинаете... ИМХО, просто пропустите DCL и придерживайтесь PERL.

$ perl -e "for (‹[.SUBDIR]*.PNG>) { следующий, если только -M > 0,123; печать; ...}"

Удачи! Хайн

person Hein    schedule 15.03.2014
comment
time_now не обязательно содержит время в момент выполнения команды. Я ищу логику, которая позволит мне использовать /since=time_now для поиска файлов - person kbang; 16.03.2014
comment
Ну, ты нашел это. /SINCE=dd-mmm-yyyy hh:mm:ss или /SINCE=-3- для 3 дней назад, или /SINCE=YES(terday) или /BEFORE для остальных. Добавьте /MODI, чтобы выбрать время модификации вместо времени создания. не забудьте подготовить $ HELP DIR /SINCE. - person Hein; 16.03.2014
comment
f$file_attributes не имеет атрибута для получения, так как - person kbang; 16.03.2014
comment
Как получить время последней модификации файла из лексического - person kbang; 16.03.2014
comment
РДТ. И для сравнения используйте: напишите sys$output f$cvtime(f$file(sys$login:login.com,RDT)). Для справки используйте аргумент $help lexi f$file. - person Hein; 16.03.2014

верх:

  file = f$search("[.subdir]*.PNG")
  if (file .eqs. "")then goto cont
  mtime=f$file_attribute(file,"RDT")
  if mtime.ges.build_start_time then -
      name=f>parse(file,,,"NAME")
      call CHECK "''name'"
  goto top

продолжение:

@Hein, пожалуйста, просмотрите этот код и предложите изменения

person kbang    schedule 16.03.2014
comment
Также вы случайно не знаете лексику для поиска внутри файла? я хочу сделать search /key=(position=1,size=10) proj_fl.txt "resources/" - person kbang; 16.03.2014
comment
1) Как я указал в предыдущем комментарии, вам нужно преобразовать измененное время, а также build_start_time в стиль «сравнения», используя F$CVT. 2) вы также можете передать «файл», поскольку «имя» не имеет каталога ... всегда проверяйте с помощью WRITE SYS $ OUTPUT. 3) нет лексики для поиска всего файла. Нужен цикл OPEN + READ/END и F$SUBS и F$LOC. Может быть лучше SEARC/WIND=0/LIMI=1/KEY=(...) и потом проверить $STATUS. Или SEARC/KEY=(...)/OUT=xxx и разобрать xxx. - person Hein; 16.03.2014
comment
@Hein, как мне сопоставить что-то до конца строки? $ SEARCH match.pl =new_prj дает key=new_prj_tc_00 , key=new_prj . Я хочу найти только new_prj - person kbang; 16.03.2014
comment
Как только вы перейдете к специальному сопоставлению строк, вам, возможно, будет лучше использовать AWK или PERL, или синтаксический анализ для каждой записи в DCL. Для соответствия EOL используйте: $ SEARC/WILD=STRICT *new_prj. Теперь в PERL вы должны использовать /new_prj\b/, где \b — граница слова, и совпадать где угодно, не беспокоясь о завершающих пробелах или встроенных комментариях. Для соответствия eol PERL вы, вероятно, использовали бы /new_prj\s*$/ - person Hein; 17.03.2014
comment
да, я пробовал search/wild=strict new_prj/› --› не работал. позвольте мне поэкспериментировать завтра - person kbang; 17.03.2014
comment
Это сработало. Он сделал именно то, что вы просили. Поскольку вы не вставили начальный подстановочный знак, он должен был соответствовать всей строке. РТФХ - person Hein; 17.03.2014