1

これをどのように行うつもりですか?

約 40 行を含むファイルがあり、各行は .exe ファイルの変数です。
外部コマンドをセットアップしました

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

次に、ファイルを1行ずつループしようとします

{方法1}

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

私の問題は、b の値に引用符 (" ") が含まれているため、file.exe が実行されないことです。

また、file.txt の各行の先頭に CC を配置して (以下に示す)、上記のように一度に 1 行ずつ実行しようとしましたが、デフォルトの場所から CC.exe を実行できないというエラーが表示されます。以下に示すように、方法 1 のアイデアにとって重要な場合は、変数 2 ~ 4 を二重引用符で囲む必要があります。

{方法2}

$ 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 は、引数 1 で始まり、一重引用符で囲まれた、argv を出力する単純な C プログラムです。$ show symb bファイルから実際に読み取られたものを表示するだけです。シンボルの内容は二重引用符で囲みます。

$ CC 'b'これは、一重引用符が dcl にシンボル b を展開するように指示する場所を除いて、多かれ少なかれあなたが持っていたものです。また、入力ファイルを読み取った後に閉じることは悪い考えではありません。

いいえ、何もする必要はありませんDEFINE。外部コマンドの場合、 を使用する必要はありません.exe。これがデフォルトです。

于 2013-03-06T17:32:25.520 に答える
0

CCを定義してから方法2を使用して各行を呼び出すことで、機能させることができました

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