2013-03-06 58 views
1

你會如何去做這件事?dcl使用外部命令執行程序

我有一個文件,其中包含大約40行,每行是一個.exe文件的變量。
我設置一個外部命令

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

我再由線通過文件行試圖循環

{}方法一

$ 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的錯誤。如下所示,如果變量2-4對於方法1的想法很重要,則需要用雙引號。

{方法2}

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

我到底需要做一次運行這些約10%,所以我想如果我能得到方法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只是一個簡單的C程序來打印argv,從參數1開始並引用單引號;而$ show symb b只是爲了顯示文件中實際讀取的內容;符號內容用雙引號引起來。

除了$ CC 'b'之外,這或多或少是你所擁有的,其中單引號告訴dcl展開符號b。讀完後關閉輸入文件並不是一個壞主意。

不,沒有必要DEFINE什麼。對於外部命令,您不必擁有.exe,這是默認設置。

+0

單引號做了伎倆! – user1943219 2013-03-06 18:21:07

0

我能夠得到它通過定義CC然後才能使用方法2調用每行

DEFINE CC $something$something:file.exe;