フォルダーが存在しない場合はフォルダーを作成するスクリプトを作成しました。パスは共有ネットワーク フォルダーです。共有フォルダーへの変更アクセス権があり、スクリプトは正常に動作します。ただし、共有フォルダーへの読み取りアクセス権のみを持つ同僚がスクリプトを実行すると、以下のコード セクションに到達したときに JMP がクラッシュします。JMP はログ ファイルも含めてすべてを完全に閉じてしまうため、エラーがあるかどうかを確認できません。私の場合は正常に動作します。
なぜこのようなことが起こるのか疑問に思いますか?
datestamper = Long Date( Today() );
timestamp = MDYHMS( Today() );
dtname = New Table( "UserName",
add rows( 1 ),
New Column( "Time", Character, "nominal", set each value( timestamp ) )
);
dtname:Time << set data type( Numeric ) << Format( ("ddmonyyyy h:m:s"), Input Format( "mm/dd/yyyy h:m:s" ) );
dtname:Time << set data type( Character );
dtname << New Column( "Folder", Character, nominal, formula( Substr( :Time, 3, 7 ) ) );
foldername = Char( :Folder );
path = ("S:\Lab\JMP\Results\Data\" || Char( foldername ) || "\");
If( !Directory Exists( path ),
Create Directory( path ),
Print( path || " already exists." );
Wait( 0 );
);
Craig さん、編集 1 (\\server\path\file) で正解でした。 s: ではなくサーバーをマップすると、完全に機能しました。あなたの助けをありがとう:)
問題を絞り込むために、次のようなスクリプトを使用します。
// Create a log file on disk. Append each line to the end.
_LogFileName = "$desktop/JMP_log_file.txt";
// clear any old data and make sure the file exixts:
Save Text File( _LogFileName, Format( Today(), "h:m:s" ) || " starting\!n", Mode( "replace" ) );
addLog = Function( {txt},
Save Text File( _LogFileName, Format( Today(), "h:m:s" ) || " " || Char( txt ) || "\!n", Mode( "append" ) )
);
// example:
addlog( "begin loop" );
For( i = 1, i < 3, i += 1,
addlog( "looping " || Char( i ) )
);
addlog( "done" );
Open( _LogFileName, "script" ); // open in a script editorクラッシュ後、ファイル (この例ではデスクトップ上) の最後の行に addlog への最後の呼び出しが表示されます。 数回試行した後、おそらく問題を 1 つのステートメントに絞り込むことができます。 ネットワークドライブに関連していると思います。ファイル名などを必ずログ ファイルに追加してください。 char() を使用して、非テキスト値をテキストに変換します。
JMP がクラッシュすることはありません。回避策が見つかったとしても、テクニカル サポートに問題を報告していただければ幸いです。
編集 1: S: ドライブ マップが両方のコンピューターで同じではないことに特に疑いがあります。 を使ってUNC name が問題である場合は、回避策になる可能性があります (\\server\path\file)。
編集2:テーブルの数式列または現在の行にも問題があると思います。 このようなもの(テストされていません)の方が良いかもしれません:
datestamper = Long Date( Today() );
timestamp = MDYHMS( Today() );
dtname = New Table( "UserName",
add rows( 1 ),
New Column( "Time", Character, "nominal", set each value( timestamp ) )
);
dtname:Time << set data type( Numeric ) << Format( ("ddmonyyyy h:m:s"), Input Format( "mm/dd/yyyy h:m:s" ) );
dtname:Time << set data type( Character );
dtname << New Column( "Folder", Character, nominal, formula( Substr( :Time, 3, 7 ) ) );
dtname << runFormulas; // force the formulas to run now
foldername = Char( dtname:Folder[1] ); // explicit table and row subscript
path = ("S:\Lab\JMP\Results\Data\" || Char( foldername ) || "\");