2017-06-20 3 views
2

Windows 7でBase SAS 9.4を使用しています。以下に説明するさまざまな理由により、私のプログラムの名前が非常に長いものがあります。これをさらに悪化させ、プログラムはネットワークドライブの深みに深く格納されます。これは、Windows Explorerから開くときに問題を引き起こします。私はこの問題がSASにあると信じていますが、そうでない場合はWindowsで質問にタグを付けました。私は、構成ファイルまたはレジストリへの編集を介してこの問題に対処する方法があることを願っています。SAS - Windowsエクスプローラから長い名前のプログラムを読み込めません。


プログラムを開くには、通常、Windowsエクスプローラで.sasファイルをダブルクリックします。これにより、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を開くと、Openダイアログで182文字を超えるパスを使ってプログラムをロードできます。しかし、これは良い解決策ではありません.Openダイアログでは、パスをコピー/ペーストすることはできません。ファイルパス全体を走査する必要があります。そのようなプログラムをSASのエディタウィンドウにドラッグしてロードすることもできます。空のエディタウィンドウがある場合にのみプログラムがロードされるので、これも良い解決策ではありません。プログラムが誤ってログウィンドウにドラッグされた場合、プログラムは自動的に実行されます。また、便利な場所には開かれません。拡張エディタの中央で開き、手動でサイズを変更する必要があります。プログラムをロードして実行できるということは、この問題を解決する方法がいくつかあると私に信じています。ファイルをロードする途中のどこかで、SASがいくつかの可変限界に違反しているようです。

もちろん、人々は私が別のネットワークロケーションまたはより短い名前を使用することを提案します。前者には、特定のネットワークロケーションを使用する必要があります。後者については、これらのプログラムはさまざまな報告書と並行して開発されています。プログラムの多くは似ており、レポート内の対応する参照(表/図番号)が複数回変化する/必ずしも私に伝えられるとは限りません。経験を通し、これらの不確定要素を扱う最も確実な方法は、レポートに与えられたラベルでファイルの名前を付けることです。さもなければ、私は不明瞭な略語や悪い組織慣行を採用するか、あるいはプログラムを索引付けするコードや文書を作成するなどの中間的なステップを導入する必要があります。


編集:パージョーさんのコメント、[開く]ダイアログが特定のファイル名をコピーして貼り付けることができますようです。ファイルパスは、WindowsエクスプローラでShift + Right Mouse Click > Copy as Path経由でコピーし、[開く]ダイアログの[ファイルパス]ボックスに貼り付けることができます。ツリーを横断避けるため

enter image description here

は、現在のフォルダは、[開く]ダイアログにアクセスする前に更新することができます。これは、拡張エディタの右下にあります。

enter image description here

[開く]ダイアログには、現在のフォルダの場所に設定されているものから始まります。

+1

ダイアログを開いてもコピー/ペーストができませんか?それは私の経験と一致しません。テストしただけで、完全なファイル名とディレクトリパスの両方を問題なく貼り付けることができます。 – Joe

+0

どのようにディレクトリに貼り付けますか? –

+0

パスを含むファイル名を[ファイル名:]プロンプトに貼り付けます。またはパスを貼り付けるだけで、そのパスのファイルが表示されます。 – Tom

答えて

1

あなたの問題は、あなたの260限度が実際に適用可能であると思われると思います。

プログラムファイルをダブルクリックすると、パスがSASにコピーされるだけではありません。代わりに、何が起こるかは、これに似た何かのコマンドを使用して、SASOACT.exeと呼ばれている。それ自体で優に超える100文字すでにだ

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

。おそらく、舞台裏では

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

のようになります。これは、通過するものにおよそ70文字または80文字を追加します。したがって、260文字の制限。

回避策の1つを使用する必要があります。私は個人的にファイルを開くことを好みますが、自分自身ですが、あなたのために最適なものはどれも大丈夫です。単純なダブルクリックアクションのために別のエディタを使用することも考えられますが、選択したエディタにはまだの一部があり、という問題があります。

また、パス名が短い場所にSASをインストールするようにITに依頼することもできますが、現実的には10文字ほど節約できます。

貼り付けについては、ファイル名と同じくらい簡単にパス名をファイル - >開くダイアログに貼り付けることができます。 ...


方法により、考慮すべき別の回避策を、私はあなたができると考えているようだしない理由はわかりませんが、私はちょうど他のフォルダ]ダイアログを超えない困難を伴うので、今やっていますドライブ文字をネットワークパスにマッピングします。あなたが参照するか以外何も変更されないルートパスに、// MYSERVER /プロジェクト/金融/ projectnumber、:ネットワークパスが

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

ある場合Ieは、あなたには、いくつかの文字を割り当てる(任意のは、Rとしましょう)それをローカルに送ります。あなたはこれを上やってみたかった任意のマシン上でそのマッピングプロセスを繰り返す必要があるだろうなど、

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

関連する問題