1

你会怎么做呢?

我有一个包含大约 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 的每一行的开头(如下所示)并像上面一样一次运行每一行 1,但它给出了一个错误,即它无法从默认位置运行 CC.exe。正如您在下面看到的,如果这对方法 1 的想法很重要,则变量 2-4 需要用双引号引起来。

{方法二}

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

最后我需要做的是一次运行大约 10 个,所以我认为如果我能让方法 2 起作用,那将是最好的。

4

2 回答 2

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 的位置。阅读后关闭输入文件并不是一个坏主意。

No, there is no need to DEFINE anything. For the foreign command you don't have to have the .exe, it's the default.

于 2013-03-06T17:32:25.520 回答
0

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

DEFINE CC $something$something:file.exe;
于 2013-03-06T16:25:08.920 回答