我編寫了一個腳本,如果資料夾不存在,則會建立一個資料夾。該路徑是共享網路資料夾的路徑。我可以修改共用資料夾的存取權限,並且該腳本對我來說工作正常。但是,當一位對共用資料夾只有讀取存取權的同事執行腳本時,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 的最後一次調用。 嘗試幾次後,您可能可以將問題縮小到一個語句。 我猜這將與網絡驅動器有關;請務必將文件名等添加到日誌文件中。 使用 char() 將非文本值轉換為文本。
JMP 不應崩潰;即使您找到了解決方法,也最好將問題報告給技術支持,謝謝!
編輯 1:我特別懷疑兩台計算機上的 S: 驅動器映射不同。 用一個聯合國軍司令部如果這是問題所在 (\\server\path\file),name 可能是一種解決方法。
編輯 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 ) || "\");