2013-10-11 52 views
2

我一直在谷歌搜索了一個小時,找不到應該是最簡單的東西。調用SAS 9.2從命令行編輯程序(windows)

我想從命令行調用SAS來編輯SAS程序。

如果我這樣做:

C:\Program Files\SAS\SASFoundation\9.2(32-bit)\sas.exe mysasprogram.sas 

它只是執行mysasprogram.sas。

幫助!

謝謝!

回答

1

通過我的註冊表和更多谷歌搜索後,我得到了這個解決方案,似乎工作。但是,我沒有足夠的瞭解SAS.EXE和SASOACT.EXE之間的差異。

SASOACT.EXE action=Open datatype=SASFile filename="mysasprogram.sas" 
+0

SASOACT是SAS OLE自動化服務器控制器。它可能會啓動一個新進程或將文件發送到當前進程。我不知道我推薦以這種方式使用它 - 雖然它能夠做你所要求的,但我還沒有發現它在過去是非常可靠的。但是如果你的安裝沒有任何問題,這可能是一個很好的解決方案。 – Joe

4

創建文件:

E:\ sasedit.bat

set _pgm=%1 
start "start" "C:\Program Files\SASHome\SASFoundation\9.3\sas.exe" -autoexec "E:\autoexec.sas" 

E:\ autoexec.sas

%let _pgm=%sysget(_pgm); 
dm "whost;include '&_pgm';"; 
  • mysasprogram.sas與anycontent在沒有按」路徑t需要引號(在DOS中)。

運行命令:

E:\sasedit.bat E:\pathtomyfile\mysasprogram.sas 

的自動執行代碼的語法: DM是顯示管理器,WHOST命令調用SAS增強編輯器。

要在需要引號的路徑中使用此引號,您必須在引號中提供路徑併爲autoexec代碼添加一些引用處理。

運行一些初始命令的另一種方法是通過INITSTMT SAS命令行選項,但是我們會遇到大量引用問題。

+0

不錯。我會自己使用這個。 – DomPazz

+1

聰明的解決方案,雖然我不知道爲什麼有人會想這個。另外,我建議在'start'命令中加入'-rsasuser'選項以防止腳本「鎖定」SASUSER自動庫。 – BellevueBob

0

我遇到了一些麻煩vasja's answer工作 - 調用%sysget無法檢索的變量。

最後我用一個單一的文件(launchsas.cmd):

set fn=%1 
set fn=%filename:"=% 
set command="%%let filename='%fn%'; dm 'whost;include &filename.;';" 
start "start" C:\path\to\sas.exe -initstmt %command% 

注意,「文件名」變量的創建是爲了避免與內嵌引號的問題。