如何使用批处理文件在某些​​子目录中创建一个新文件夹,具体取决于子目录的名称

时间:2015-05-21 15:38:49

标签: batch-file windows-xp

我有一个包含多个子和子子目录的目录: 目录/子目录/ subsubdirectory

其中一些子目录被称为" name",其他不是。在"名称"目录,我想创建一个新目录,它始终是相同的。 我已将此代码写入放在主目录中的批处理文件中:

@echo off
for /r %%i in (*) do (
    if "%%~ni" == Flank do(
        mkdir %%i\Diffractometry
        mkdir %%i\Diffractometry\0 
        mkdir %%i\Diffractometry\6.5 
        mkdir %%i\Diffractometry\11     
    )
) 

但是,此代码在任何地方创建Diffractometry文件夹,而不仅仅是在名为" Flank"的子目录中。

你知道我能做些什么来解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

发现两个错误:

@echo off
for /r %%i in (*) do (
    if "%%~ni" == "Flank" (
        rem       ^     ^       quotes and invalid `do` in `if`
        mkdir %%i\Diffractometry
        mkdir %%i\Diffractometry\0 
        mkdir %%i\Diffractometry\6.5 
        mkdir %%i\Diffractometry\11     
    )
) 

答案 1 :(得分:0)

您可以使用

for /r %%i in (*) do (
    if "%%~ni"=="Flank" (
        mkdir %%i\Diffractometry\0 
        mkdir %%i\Diffractometry\6.5 
        mkdir %%i\Diffractometry\11     
    )
) 

for /r %%i in (Flank) (
    if exist "%%~fi\" for %%a in (0 6.5 11) do md "%%~fi\Diffractometry\%%a"
) 

无论如何

  • for命令需要do子句,但if命令不使用它。

  • 比较字符串值时,引号包含在操作中,因此比较的两边应包含引号,否则值将不匹配。

  • mkdirmd命令创建完整指示的层次结构,您可以直接创建更深层的子文件夹,并在需要时生成所有父项。