最近用lua,发现没有可以直接判断目录是否存在的函数,因此用了个取巧的方法
利用 os.execute("cd 目录") 来完成,通过返回值来判断,0为成功,非0为失败
不过这样有一个最明显的问题,当目录不存在时,会有输出信息到控制台上,这个我不需要
因此需要做以下修改,将命令信息重定向为nul即可
命令的结果可以通过"%>"的形式来重定向输出,%表示文件描述符:1为标准输出stdout,2为标准错误stderr。
系统默认%值为1,"1>"也可以简写为">"。
因此最终可能如同这样:
os.execute("cd \"目录\" >nul 2>nul")即可
贴段最终代码来看看
if dir then
-- 去掉尾部的"/",可能没有,但为了防止连接字符串出错,还是做一次判断
dir = string.gsub(dir, "\\", "\\\\")
dir = string.gsub(dir, "[/\\]*$", "")
-- 判断目录是否存在,其中>nul和2>nul是将修改重定向到空,否则当目录不存在时,会有错误提示
if os.execute("cd " .. "\"" .. dir .. "\" >nul 2>nul") == 0 then
new_filename = dir .. "/" .. new_filename
elseif os.execute("mkdir " .. "\"" .. dir .. "\" >nul 2>nul") == 0 then
new_filename = dir .. "/" .. new_filename
else
print("指定的目录有问题,请重新指定")
return
end
end