dcl使用外部命令执行程序

时间:2013-03-06 15:16:30

标签: openvms dcl

你会怎么做呢?

我有一个包含大约40行的文件,每行是.exe文件的变量 我已经设置了一个外国命令

$ CC := "$something$something:file.exe"

然后我尝试逐行遍历文件

{方法1}

$ OPEN a file.txt
$ loop:
$ READ/END_OF_FILE:end a b
$ CC b
$ goto loop
$ end:

我的问题是因为b的值包含file.exe不执行的引号(“”)

我还尝试将CC放在file.txt的每一行的开头(如下所示),并且像上面一样一次运行每一行但是它给出了一个错误,它无法从默认位置运行CC.exe 。正如您在下面看到的,如果对方法1的想法很重要,则2-4需要使用双引号。

{方法2}

$ CC variable1 "variable2" "variable3" "variable4"

我最终需要做的是同时运行大约10个,所以我想如果我能让方法2工作最好。

2 个答案:

答案 0 :(得分:2)

我不确定我是否完全理解你想要实现的目标。根据我的阅读,我想要一个文本文件(file.txt),如

This
That
"Quoted"
"Quoted blank"
" "
This and that
"This and" "that"

编写命令程序(echo.com),如

$ cc:=$sys$disk:[]echo
$ OPEN a file.txt
$ loop:
$ READ/END_OF_FILE:end a b
$ show symb b
$ CC 'b'
$ goto loop
$ end:
$ CLOSE a

运行时给出:

$ @echo
  B = "This"
arg1: 'this'
  B = "That"
arg1: 'that'
  B = ""Quoted""
arg1: 'Quoted'
  B = ""Quoted blank""
arg1: 'Quoted blank'
  B = "" ""
arg1: ' '
  B = "This and that"
arg1: 'this'
arg2: 'and'
arg3: 'that'
  B = ""This and" "that""
arg1: 'This and'
arg2: 'that'
$

其中echo.exe只是一个打印argv的简单C程序,从参数1开始,用单引号引用;并且$ show symb b只是为了显示文件中实际读取的内容;符号内容用双引号引用。

这或多或少是你所拥有的,除了$ CC 'b',其中单引号告诉dcl扩展符号b。阅读后关闭输入文件并不是一个坏主意。

不,没有必要DEFINE任何东西。对于外来命令,您不必拥有.exe,这是默认设置。

答案 1 :(得分:0)

我能够通过定义CC然后使用方法2来调用每一行

来使其工作
DEFINE CC $something$something:file.exe;