フォルダーが存在しない場合にフォルダーが作成されるスクリプトを作成しました。 パスは共有ネットワークフォルダへのパスです。 共有フォルダーへのアクセスを変更しましたが、スクリプトは正常に機能します。 ただし、共有フォルダーへの読み取りアクセス権しか持たない同僚がスクリプトを実行すると、コードの以下のセクションに到達すると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 );
);
このようなスクリプトを使用して、問題を絞り込みます。
// 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 ) || "\");クレイグに感謝します。編集1(\\ server \ path \ file)は正しかったです。 sではなくサーバーをマッピングすると、完全に機能しました。あなたの助けに百万ありがとう:)