Scripting 如何在DCL——OpenVMS脚本中编辑输出文本
我编写了下面的代码,它将提取目录名和文件名,并对提取的文本使用purge命令Scripting 如何在DCL——OpenVMS脚本中编辑输出文本,scripting,openvms,dcl,Scripting,Openvms,Dcl,我编写了下面的代码,它将提取目录名和文件名,并对提取的文本使用purge命令 $ sear VAXMANAGERS_ROOT:[PROC]TEMP.LIS LOG/out=VAXMANAGERS_ROOT:[DEV]FVLIM.TXT $ OPEN IN VAXMANAGERS_ROOT:[DEV]FVLIM.TXT $ LOOP: $ READ/END_OF_FILE=ENDIT IN ABCD $ GOTO LOOP $ ENDIT: $ close in $ ERROR=F$EXTRACT
$ sear VAXMANAGERS_ROOT:[PROC]TEMP.LIS LOG/out=VAXMANAGERS_ROOT:[DEV]FVLIM.TXT
$ OPEN IN VAXMANAGERS_ROOT:[DEV]FVLIM.TXT
$ LOOP:
$ READ/END_OF_FILE=ENDIT IN ABCD
$ GOTO LOOP
$ ENDIT:
$ close in
$ ERROR=F$EXTRACT(0,59,ABCD)
$ sh sym ERROR
$ purge/keep=1 'ERROR'
结果如下:
ERROR = "$1$DKC102:[PROD_LIVE.LOG]DP2017_TMP2.LIS;27392 "
这里的问题是每次目录长度变化时,长度可能是59或40或其他值,但在我的系统中目录和文件名长度不会超过59个字符。因此,在上述输出中,系统还获取该文件号的版本号。因此,我无法清除该文件以及版本号
%PURGE-E-PURGEVER, version numbers not permitted
任何建议-如何从输出中删除版本号
我无法使用目录的确切长度,因为目录长度每次都会变化….: 虽然哈博对此进行了解释,但还有一些解释 假设我使用f$search检查文件是否存在 a=f$searchsys$manager:net$server.log 然后我发现它存在 wr系统$a输出 显示 SYS$SYSROOT:[SYSMGR]NET$SERVER.LOG;九, 在f$parse的帮助下,我得到了 帮助lex f$parse arg 除其他外,表演 `指定包含字段名称的字符串 在文件规范中。指定字段参数会导致 F$PARSE函数返回文件的特定部分 规格
Specify one of the following field names (do not abbreviate):
NODE Node name
DEVICE Device name
DIRECTORY Directory name
NAME File name
TYPE File type
VERSION File version number`
所以我能做到
wr sys$output f$parsea、、设备
显示
SYS$SYSROOT:
而且
wr sys$output f$parsea,,,目录
所以我明白了
[系统管理员]
及
wr sys$output f$parsea、、名称
显示
净$SERVER
及
wr sys$output f$parsea、、类型
显示
.日志
版本是
wr sys$output f$parsea、、版本
显示为
);九,
词典功能非常方便,请使用
帮助词汇
它表明
F$CONTEXT F$CSID F$CUNITS F$CVSI F$CVTIME F$CVUI F$DELTA_TIME F$DEVICE F$DIRECTORY F$EDIT
F$ELEMENT F$ENVIRONMENT F$EXTRACT F$FAO F$FID_TO_NAME F$FILE_ATTRIBUTES F$GETDVI F$GETENV
F$GETJPI F$GETQUI F$GETSYI F$IDENTIFIER F$INTEGER F$LENGTH F$LICENSE F$LOCATE F$MATCH_WILD
F$消息F$模式F$多路径F$解析F$PID F$权限F$进程F$读取链接F$搜索
F$SETPRV F$STRING F$SYMLINK_属性F$TIME F$TRNLNM F$TYPE F$UNIQUE F$USER虽然哈博对此进行了解释,但还有一些解释 假设我使用f$search检查文件是否存在 a=f$searchsys$manager:net$server.log 然后我发现它存在 wr系统$a输出 显示 SYS$SYSROOT:[SYSMGR]NET$SERVER.LOG;九, 在f$parse的帮助下,我得到了 帮助lex f$parse arg 除其他外,表演 `指定包含字段名称的字符串 在文件规范中。指定字段参数会导致 F$PARSE函数返回文件的特定部分 规格
Specify one of the following field names (do not abbreviate):
NODE Node name
DEVICE Device name
DIRECTORY Directory name
NAME File name
TYPE File type
VERSION File version number`
所以我能做到
wr sys$output f$parsea、、设备
显示
SYS$SYSROOT:
而且
wr sys$output f$parsea,,,目录
所以我明白了
[系统管理员]
及
wr sys$output f$parsea、、名称
显示
净$SERVER
及
wr sys$output f$parsea、、类型
显示
.日志
版本是
wr sys$output f$parsea、、版本
显示为
);九,
词典功能非常方便,请使用
帮助词汇
它表明
F$CONTEXT F$CSID F$CUNITS F$CVSI F$CVTIME F$CVUI F$DELTA_TIME F$DEVICE F$DIRECTORY F$EDIT
F$ELEMENT F$ENVIRONMENT F$EXTRACT F$FAO F$FID_TO_NAME F$FILE_ATTRIBUTES F$GETDVI F$GETENV
F$GETJPI F$GETQUI F$GETSYI F$IDENTIFIER F$INTEGER F$LENGTH F$LICENSE F$LOCATE F$MATCH_WILD
F$消息F$模式F$多路径F$解析F$PID F$权限F$进程F$读取链接F$搜索
F$SETPRV F$STRING F$SYMLINK_属性F$TIME F$TRNLNM F$TYPE F$UNIQUE F$USER带有F$ELEMENT 0的答案;,正如所确认的那样,ABCD应该可以工作。我可能会编写这样的脚本:
$ ERROR = F$PARSE(";",ERROR) ! will return $1$DKC102:[PROD_LIVE.LOG]DP2017_TMP2.LIS;
$ ERROR = ERROR - ";"
$ PURGE/KEEP=1 'ERROR'
不知道为什么会有读循环。您将得到的是文件中的最后一行,但假设这是您想要的。使用F$ELEMENT 0的答案;,正如所确认的那样,ABCD应该可以工作。我可能会编写这样的脚本:
$ ERROR = F$PARSE(";",ERROR) ! will return $1$DKC102:[PROD_LIVE.LOG]DP2017_TMP2.LIS;
$ ERROR = ERROR - ";"
$ PURGE/KEEP=1 'ERROR'
不知道为什么会有读循环。您将得到文件中的最后一行,但假设这是您想要的。用于提取文件规范的适当部分。或f$元素以获取分号之前的部分。版本可以用分号或点分隔。悄悄的或f$locate来获取分号的位置,以便与f$extract.Hi Habo一起使用。您能告诉我在这种情况下如何使用f$ELEMENT或f$PARSE吗?它看起来像f$eleme
新台币0;,ABCD应返回分号之前的所有内容。我现在手头没有一个实时的VMS系统。IIRC,写入Sys$Output'f$元素0;,ABCD'将向您显示结果。谢谢您。。它对我有用:::::FWIW:$error\u no\u version=f$parseerror,,,device+f$parseerror,,,directory+f$parseerror,,,,name+f$parseerror,,,typeUse用于提取文件规范的适当部分。或f$元素以获取分号之前的部分。版本可以用分号或点分隔。悄悄的或f$locate获取分号的位置,以便与f$extract.Hi Habo一起使用。您能告诉我如何使用f$ELEMENT或f$PARSE吗?在这种情况下…它看起来像f$ELEMENT 0;,ABCD应返回分号之前的所有内容。我现在手头没有一个实时的VMS系统。IIRC,写入Sys$Output'f$元素0;,ABCD'将向您显示结果。谢谢您。。它对我有用:::::FWIW:$error\u no\u version=f$parseerror,,,device+f$parseerror,,,directory+f$parseerror,,,name+f$parseerror,,,type