我的批处理脚本会检查文件夹是否已存在,以及是否创建目录。我遇到了其他问题,如果文件夹已经存在,但是我无法指出它是什么。有没有办法返回错误代码来确定我的问题?
代码:
if not exist "%arcval_folder%" (
mkdir "%arcval_folder%"
echo Directory: "%arcval_folder%" created. 1>>"%logfile%" 2>&1
ECHO. 1>>"%logfile%" 2>&1
)
我一直认为该文件夹已创建,即使它没有检查目标位置。
答案 0 :(得分:3)
您可以尝试使用%ERRORLEVEL%伪变量检查mkdir命令的返回值:
C:\用户\ DWilches>
C:\Users\DWilches>mkdir test
C:\Users\DWilches>echo %ERRORLEVEL%
0
C:\Users\DWilches>mkdir test
A subdirectory or file test already exists.
C:\Users\DWilches>echo %ERRORLEVEL%
1
答案 1 :(得分:1)
这不会测试文件夹的存在。它测试是否存在具有所需名称的文件或文件夹
if exist "c:\somefolder"
这将测试文件夹存在
if exist "c:\somefolder\"
但你必须考虑更多的事情
set "test=c:\somewhere"
if exist "%test%\" (
echo Folder exists
) else if not exist "%test%" (
echo No file nor folder exist with the indicated name.
echo Maybe, folder can be created
) else (
echo There is a file with the same name as the required folder.
echo Folder can not be created
)
当然,如果您决定创建文件夹,请测试errorlevel。也许你没有权利创建文件夹。
答案 2 :(得分:1)
如果命令成功使用&&,则可以设置成功变量。
您可以设置一个标记并执行“mkdir”#39;并在这一行上仔细检查所有成功:
set folder=test
set OK=false & mkdir %folder% && if exist %folder% set OK=true
之后,检查确定如下:
if (%OK%)=(true)(
echo made dir %folder%
goto:doSomethingUseful
)else(
echo failed to make dir %folder%
goto:whatIdoWhenThisFailed
)
注意:
在DOS中,'&&'之后的命令只有先前的命令才会运行 没有错误级别而不是0(零)。
据我所知,第二次检查' if exists%folder'没有必要,因为' mkdir'只会返回errorlevel 0(零)成功。