我写了一个脚本,如果文件夹不存在,则会创建一个文件夹。路径是共享网络文件夹。我拥有共享文件夹的修改权限,脚本对我来说运行正常。但是,当只有共享文件夹读取权限的同事运行脚本时,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 ) || "\");