Batch file 如何使用批处理文件在特定子目录中创建新文件夹,具体取决于子目录的名称

Batch file 如何使用批处理文件在特定子目录中创建新文件夹,具体取决于子目录的名称,batch-file,windows-xp,Batch File,Windows Xp,我有一个包含多个子目录和子目录的目录: 目录/子目录/子目录 其中一些子目录称为“name”,其他子目录则不是。在“name”目录中,我想创建一个新的目录,它总是相同的。 我在主目录中的批处理文件中编写了此代码: @echo off for /r %%i in (*) do ( if "%%~ni" == Flank do( mkdir %%i\Diffractometry mkdir %%i\Diffractometry\0 mkdir

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

其中一些子目录称为“name”,其他子目录则不是。在“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     
    )
) 
然而,这段代码在所有地方创建衍射文件夹,而不仅仅是在名为“侧翼”的子目录中

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

发现两个错误:

@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     
    )
) 
你可以用

for/r%%i in(*)do(
如果“%%~ni”=“侧面”(
mkdir%%i\衍射法\0
mkdir%%i\衍射测定法\6.5
mkdir%%i\衍射法\11
)
) 

用于/r%%i英寸(侧面)(
如果存在(0 6.5 11)中%%a的“%%~fi\”,则执行md“%%~fi\衍射测定\%a”
) 
无论如何

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

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

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