事情起因
我使用string.split(strs,"\n")
分割字符串然后循环创建文件,结果只有最后一个文件才创建成功,
最后折腾了很久才用string.trim(str)
对每个字符串处理才解决。
创建失败原因
文件名字符串里面有特殊符号导致创建失败
刚开始以为api有问题,后面使用Kernel32的api也有问题,好在里面有获取错误的接口
接口返回0000007B
错误代码 0x7B 对应于 ERROR_INVALID_NAME,表示传递给函数的文件、文件夹名称无效。这可能是由于文件夹名称中包含了不允许的字符,或者文件夹名称太长等原因导致的。请检查传递给 CreateDirectory 函数的文件夹名称,并确保它是有效的。
在 Windows 中,文件夹名称不能包含以下任何字符:
反斜杠 ()
正斜杠 (/)
冒号 (😃
星号 (*)
问号 (?)
双引号 (")
尖括号 (< and >)
竖线 (|)
排查代码
var dll=raw.loadDll("Kernel32.dll")
var mk=dll.api("CreateDirectory","int (ustring name,int handle)")
var glerror = dll.api("GetLastError","ustring ()")
function mdir(dirname){
var rt=mk(dirname,0);
if(rt==0){
var emsg=glerror()
console.log(emsg)
}
console.log(rt)
}