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我同意你的看法。但是如何正确地检查呢?