如果两个文件夹名称匹配使用bat,则创建一个新名称

时间:2013-11-25 22:16:40

标签: batch-file

假设New Folder在我当前的目录路径中。

bat文件正在尝试在同一路径中创建另一个New Folder

如何在创建时自动将第二个文件夹重命名为New Folder1

2 个答案:

答案 0 :(得分:0)

您可以使用if exist

if exist %foldername% set foldername=%foldername%1

通过简单的循环可以使这更加健壮。

虽然,如果您有多个具有相同名称的文件夹,它最终会看起来像'New Folder', 'New Folder1', 'New Folder11'。很容易绕过一个单独的数字变量。

答案 1 :(得分:0)

一步一步的文件。根据需要进行调整。

@echo off

    setlocal enableextensions

    rem How to search and name new folders  
    set "baseName=New Folder"

    rem Search the folder with baseName and greater number.
    rem Dir is generated in descending order, so the first folder is the greatest.
    set "lastFolder="
    for /f "tokens=*" %%d in ('dir /ad /o-n /b "%cd%\%baseName%*." 2^>nul ^| findstr /b /e /r /c:"%baseName%[0-9]*"') do (
        set "lastFolder=%%~nd"
        goto endSearch
    )
:endSearch

    rem Test if we found a folder
    if defined lastFolder (

        rem Folder found, get its number by eliminating the baseName part of the name
        set "lastFolderNumber=!lastFolder:%baseName%=!"

        if not defined lastFolderNumber (
            rem if it has no number, next folder should be 1
            set "lastFolderNumber=1"
        ) else (
            rem number found, add 1
            set /a lastFolderNumber+=1
        )

    ) else (
        rem No folder exist. This is the first. So no numeration
        set "lastFolderNumber="
    )

    rem create the folder
    echo Creating: "%cd%\%baseName%%lastFolderNumber%"
    mkdir "%cd%\%baseName%%lastFolderNumber%"

:endProcess
    rem clean vars
    endlocal