批量mkdir返回码

时间:2014-04-14 15:46:30

标签: batch-file mkdir

我的批处理脚本会检查文件夹是否已存在,以及是否创建目录。我遇到了其他问题,如果文件夹已经存在,但是我无法指出它是什么。有没有办法返回错误代码来确定我的问题?

代码:

if not exist "%arcval_folder%" (
    mkdir "%arcval_folder%"
    echo Directory: "%arcval_folder%" created. 1>>"%logfile%" 2>&1
    ECHO. 1>>"%logfile%" 2>&1
)

我一直认为该文件夹已创建,即使它没有检查目标位置。

3 个答案:

答案 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(零)成功。