2017-06-20 82 views
2

我在Windows 7上使用Base SAS 9.4。出於各種原因,下面會詳細介紹一些我的程序名稱很長。進一步加劇這些問題,程序存儲在網絡驅動器的深處。這在嘗試從Windows資源管理器打開時會導致問題。我相信問題在於SAS,但如果沒有,則用Windows標記問題。我希望有一些方法可以通過配置文件或編輯註冊表來解決這個問題。SAS-無法從Windows資源管理器加載帶有長名稱的程序


打開一個程序,我對.sas文件在Windows資源管理器一般雙擊。這會在一個SAS消息框指示的簡短等待期後打開增強編輯器:

SAS系統正在處理請求。請稍候...

當程序的全名,包括路徑和擴展名,超過182個字符(即具有形式:\\network-location\a\bunch\of\....\folders\program path exceeding 182 char.sas),同樣的「SAS系統爲處理請求」消息出現,但隨後的Windows錯誤生成。

enter image description here

毫不奇怪,沒有解決方案是由Windows遞上。

當程序名稱是這樣的完整路徑是完全182個字符,沒有任何反應。我雙擊該程序,唯一的結果是在Windows資源管理器中選擇文件。如果我在Windows任務管理器中監視「進程」,則在雙擊此程序時不會啓動新進程。

如果程序名稱使得完整路徑少於182個字符,程序將按照預期在增強編輯器中打開。根據MSDN,最大路徑爲260個字符。顯然,182遠低於此限制。 SAS是唯一具有路徑長度問題的應用程序。例如,我可以複製文件名和擴展名,創建一個具有相同名稱的新文本文檔(加上.txt)並在記事本,記事本++,Word,寫字板,Emacs等中打開該文件。

我推導出兩個處理超過182個字符的名稱的解決方法。 如果我通過SAS.exe打開SAS,我可以通過打開對話框加載一個程序,路徑超過182個字符就好了。然而,這不是一個好的解決方案,因爲打開對話框不允許複製/粘貼路徑。整個文件路徑必須遍歷。我也可以將這樣的程序拖到SAS的編輯器窗口中加載它。這也不是一個好的解決方案,因爲程序只會在空白的編輯器窗口下載入。如果程序意外地拖動到日誌窗口上,它將自動執行。此外,該程序無法在方便的位置打開。它在增強編輯器中間打開,並且必須手動調整大小。程序可以被加載和執行,我相信有一些方法可以解決這個問題。似乎在加載文件的過程中,SAS違反了一些變量限制。

當然,人們會建議我使用不同的網絡位置或更短的名稱。對於前者,我需要使用特定的網絡位置。對於後者,這些方案正在與各種報告並行制定。許多程序類似,報告中相應的參考文獻(表格/圖號)多次更改/並不總是傳達給我。通過經驗,我發現處理這些不確定性的最可靠的方法就是僅僅通過報告中給出的標籤來命名文件。否則,我需要採用不明確的縮寫,不良的組織實踐或介紹中間步驟(如創建代碼或索引程序的文檔)。


編輯:每喬的評論,似乎打開對話框允許複製和粘貼特定的文件名。文件路徑可以通過Shift + Right Mouse Click > Copy as Path在Windows資源管理器中複製並粘貼到「打開」對話框的「文件路徑」框中。

enter image description here

爲了避免遍歷樹,當前文件夾可以訪問打開對話框之前更新。它位於增強型編輯器的右下角。

enter image description here

打開對話開始於任何當前文件夾位置設置爲。

+1

打開對話框不允許複製/粘貼?這與我的經驗不符。經過測試,您可以同時粘貼完整的文件名和目錄路徑,而不會有任何問題。 – Joe

+0

如何粘貼到目錄中? –

+0

將包含路徑的文件名粘貼到文件名:提示中。或者只是粘貼路徑,它會顯示該路徑中的文件。 – Tom

回答

1

我懷疑你的問題是你的260限制實際上是適用的。

當您雙擊一個程序文件時,它不會將路徑複製到SAS。相反,發生的事情是SASOACT.exe被調用時,用的類似於這樣的命令:

"C:\Program Files\SAS94\SASFoundation\9.4\core\sasexe\sasoact.exe" action=Open datatype=Access filename="%1" progid=SAS.Application.940 

這已經遠遠超過100個字符本身;大概在幕後,你最終會得到類似於

"C:\Program Files\SAS94\SASFoundation\9.4\core\sasexe\sasoact.exe -open ""%1""" 

這會給你傳遞的信息增加大約70或80個字符。因此,260個字符的限制。

你應該使用其中一個解決方法 - 我個人比較喜歡只是文件 - >打開,我自己,但真的什麼最適合你最好。您也可以考慮使用其他編輯器進行簡單的雙擊操作,但您選擇的任何編輯器仍會有某些問題。

您也可以考慮讓IT部門將SAS本身安裝在路徑名較短的位置,儘管實際上可能會節省10個字符左右。

至於粘貼;您可以像文件名一樣將路徑名粘貼到文件 - >打開對話框中。我不知道爲什麼你似乎並不認爲你可以,但我沒有比任何其他文件夾對話框更多的困難,這樣做是現在...


另一個解決辦法來考慮,順便說一句,是將驅動器號映射到網絡路徑。也就是說,如果你的網絡路徑

//myserver/projects/financial/projectnumber/.../ 

你映射一些字母(假設R:任意)到根路徑,// MYSERVER /項目/金融/ projectnumber,這是不改變其他任何比你如何引用到當地。然後你可以使用:

R:\...\filename.sas 

而且你不必導航路徑等你不得不重複,你想在這樣做的任何機器上的映射過程,但如果這主要是關於你的自己的工作流程,這不應該是一個問題。只是不要提到R:在程序本身中,沒有人會知道你改變了什麼。

+0

喬拉!你搖滾!我沒有想到映射到一個驅動器,並且運行良好。對於任何感興趣的人來說,這個線程都有相關的信息,並且有助於在更深層次上理解問題:https://stackoverflow.com/questions/24898146/open-sas-program-in-new-instance –

+0

雖然修復程序可以解決問題,分析是*方式*關閉。對於命令行沒有'MAX_PATH'限制,'MAX_PATH'限制也不適用於任何包含目錄/路徑名的字符串。如果有的話,這不是強制這個限制的系統。這可能是應用程序中的一個錯誤,在這個特定情況下,任意決定限制其字符串處理。此外,Windows API中的* true *路徑名稱限制在Windows NT上始終爲32k Unicode代碼單元(儘管許多應用程序不準備利用此)。 – IInspectable

相關問題