Batch file 批处理mkdir返回代码
我的批处理脚本检查文件夹是否已经存在,是否不存在,以创建目录。除了文件夹是否已经存在之外,我还遇到了其他问题,但我无法确定它是什么。是否有方法返回错误代码以确定我的问题 代码:Batch file 批处理mkdir返回代码,batch-file,mkdir,Batch File,Mkdir,我的批处理脚本检查文件夹是否已经存在,是否不存在,以创建目录。除了文件夹是否已经存在之外,我还遇到了其他问题,但我无法确定它是什么。是否有方法返回错误代码以确定我的问题 代码: 我一直知道文件夹是被创建的,即使在没有检查目标位置时也是如此 您可以尝试使用%ERRORLEVEL%伪变量检查mkdir命令的返回: C:\Users\DWilches> C:\Users\DWilches>mkdir test C:\Users\DWilches>echo %ERRORLEVEL% 0
我一直知道文件夹是被创建的,即使在没有检查目标位置时也是如此 您可以尝试使用%ERRORLEVEL%伪变量检查mkdir命令的返回: C:\Users\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
您可以尝试使用%ERRORLEVEL%伪变量检查mkdir命令的返回: C:\Users\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
这不会测试文件夹是否存在。它测试是否存在具有所需名称的文件或文件夹
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。可能您没有创建文件夹的权限。这不会测试文件夹是否存在。它测试是否存在具有所需名称的文件或文件夹
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。可能您没有创建文件夹的权限。如果使用&&命令成功,则可以设置成功变量 您可以设置一个标志,执行“mkdir”并在一行上重复检查成功情况,如下所示:
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
)
之后,按如下方式检查OK:
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
如果命令使用&&成功,则可以设置成功变量 您可以设置一个标志,执行“mkdir”并在一行上重复检查成功情况,如下所示:
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
)
之后,按如下方式检查OK:
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
这就是为什么我不告诉你目录是否没有被创建。@SachaDee我同意你的看法。但是如何正确地检查呢?这并不是说目录是否没有创建。@SachaDee我同意你的看法。但是如何正确地检查呢?