【问题标题】:dcl assignment from a command来自命令的 dcl 分配
【发布时间】:2014-03-15 00:51:59
【问题描述】:

我是 DCL 的新手。

我想在一个变量中得到一个命令的输出,并一个一个地迭代结果。

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

【问题讨论】:

  • time_now 具有所需格式的时间。

标签: openvms vms dcl


【解决方案1】:

这不是我们使用 DCL 的方式。

我们不做管道,我们做,但不是真的。

DIR/SINCE=NOW ... 根据定义不会给出任何东西,因为从现在起什么都不存在。

使用 /OUT 将目录输出粘贴到文件中,然后读取 ans parse (F$PARSE and/or F$ELEMENT and/or F$LOC)

查看帮助打开;帮助阅读[/END];帮助词汇

谷歌示例。

更高级的 DCL 脚本使用 F$PARSE、F$SEARCH 和 F$FILE(file,CDT) 来避免激活图像和创建临时文件:$ HELP LEXICAL

谷歌示例。 查看昨天的堆栈交换条目?! :OpenVMS - DELETE Line if TEXT like x

但是,如果您刚刚开始...恕我直言,请跳过 DCL 并坚持使用 PERL

$ perl -e "for () { next unless -M > 0.123; print; ... }"

祝你好运! 海因

【讨论】:

  • time_now 不一定包含命令执行点的时间。我正在寻找一个允许我使用 /since="time_now" 来查找文件的逻辑
  • 好吧,你找到了。 /SINCE="dd-mmm-yyyy hh:mm:ss" 或 /SINCE="-3-" 表示 3 天前,或 /SINCE=YES(terday) 或 /BEFORE 表示其余时间。添加 /MODI 以选择修改时间而不是创建时间。请务必准备好 $ HELP DIR /SINCE。
  • f$file_attributes 没有属性可以获取“since”
  • 如何从词法中获取文件的最后修改时间
  • "RDT"。并进行比较,使用:编写 sys$output f$cvtime(f$file("sys$login:login.com","RDT"))。如需帮助,请使用 $ help lexi f$file 参数。
【解决方案2】:

顶部:

  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 请检查此代码并提出更改建议

【讨论】:

  • 你也知道在文件中搜索的词汇吗?我想做search /key=(position=1,size=10) proj_fl.txt "resources/"
  • 1) 正如我在前面的评论中指出的,您需要使用 F$CVT 将修改时间以及 build_start_time 转换为“比较”样式。 2) 你也可以传递'file',因为'name' 没有目录……总是检查WRITE SYS$OUTPUT。 3) 没有用于搜索整个文件的词法。需要一个 OPEN + READ/END 循环和 F$SUBS 和 F$LOC。 SEARC/WIND=0/LIMI=1/KEY=(...) 可能更好,然后检查 $STATUS 。或 SEARC/KEY=(...)/OUT=xxx 并解析 xxx。
  • @Hein 我如何匹配一些东西直到行尾? $ SEARCH match.pl "=new_prj" 给出 key=new_prj_tc_00 , key=new_prj 。我只想匹配 new_prj
  • 一旦你进行了特殊的字符串匹配,你可能会在 AWK 或 PERL 中更好,或者在 DCL 中进行逐记录解析。要匹配 EOL,请使用:$ SEARC/WILD=STRICT "*new_prj"。现在在 PERL 中,您将使用 /new_prj\b/ 其中 \b 是单词边界并匹配任何不必担心尾随空格或内联 cmets 的地方。对于 PERL eol 匹配,您可能会使用 /new_prj\s*$/
  • 是的,我试过 search/wild=strict "new_prj/>" --> 没用。让我明天再做一些实验
猜你喜欢
  • 1970-01-01
  • 2012-01-10
  • 2015-02-05
  • 2014-10-04
  • 2022-12-01
  • 2011-10-08
  • 1970-01-01
  • 2018-12-29
  • 2013-01-28
相关资源
最近更新 更多