Batch file 创建新文件夹&;更名为&;将所有具有特殊名称的文件夹移动到新创建的文件夹中

Batch file 创建新文件夹&;更名为&;将所有具有特殊名称的文件夹移动到新创建的文件夹中,batch-file,batch-processing,Batch File,Batch Processing,我有这个代码是根据用户需求执行的。它在C:\test\test\test中查找包含单词part的任何文件夹,并对其执行一些操作 set num=0 cd /d "C:\test\test\test" for /f "delims=" %%a in ('dir *part* /b /ad /ODN ') do ( REM - New Funcations mkdir "tempgroup" && set name=%%a && ren "tempgroup

我有这个代码是根据用户需求执行的。它在
C:\test\test\test
中查找包含单词
part
的任何文件夹,并对其执行一些操作

set num=0
cd /d "C:\test\test\test"
for /f "delims=" %%a in ('dir *part* /b /ad /ODN ') do (

REM - New Funcations    
mkdir "tempgroup" && set name=%%a && ren "tempgroup" "!name:~0,-9!- GROUP VIDEO"
move %%a 

GOTO NEXT
)
我想扩展功能,但花了很多时间没有得到我想要的结果

首先,
%%a
=
2014-07-18 13h44m10s-第1部分

  • 复制文件夹名称并将
    2014-07-18 13h44m10s-第1部分
    重命名为
    2014-07-18 13h44m10s-群组视频
    ,而不制作临时目录
    tempgroup
    。这样做是为了防止在再次执行脚本时创建
    tempgroup
    文件夹

  • 将包含单词
    部分的所有文件夹移动到
    2014-07-18 13h44m10s-群组视频中

  • 以下是文件夹列表及其外观:

    2014-07-18 13h44m10s-第1部分
    2014-07-18 13h45m10s-第2部分
    2014-07-18 13h46m20s-第3部分
    2014-07-18 13h47m32s-第4部分
    2014-07-18 13h48m10s-第5部分
    2014-07-18 13h48m20s-第6部分
    2014-07-18 13h48m30s-第7部分
    2014-07-18 13h48m40s-第8部分
    2014-07-18 13h49m50s-第9部分

    应将上述文件夹移动到此文件夹中

    2014-07-18 13h44m10s-群视频


    提前感谢

    以下批处理代码将所有子目录中名为部分的所有文件(但不是其子目录)复制到名为部分的第一个目录的日期/时间字符串中名为组视频的目录中

    @echo off
    setlocal enabledelayedexpansion
    cd /d "C:\test\test\test"
    set GroupVideoDirectory=
    
    for /f "delims=" %%a in ('dir *part* /b /ad /ODN ') do (
        set "DirName=%%a"
        if "!GroupVideoDirectory!"=="" (
           set "GroupVideoDirectory=!DirName:~0,-9! - GROUP VIDEO"
           if not exist "!GroupVideoDirectory!" mkdir "!GroupVideoDirectory!"
        )
        copy /Y "%%a\*.*" "!GroupVideoDirectory!" >nul
    )
    endlocal
    
    @echo off
    setlocal enabledelayedexpansion
    cd /d "C:\test\test\test"
    set GroupVideoDirectory=
    
    for /f "delims=" %%a in ('dir *part* /b /ad /ODN ') do (
        set "DirName=%%a"
        if "!GroupVideoDirectory!"=="" (
           set "GroupVideoDirectory=!DirName:~0,-9! - GROUP VIDEO"
           if not exist "!GroupVideoDirectory!" mkdir "!GroupVideoDirectory!"
        )
        move /Y "%%a\*.*" "!GroupVideoDirectory!" >nul
        rd "%%a"
    )
    endlocal
    
    换句话说,子目录中的所有文件

    • 2014-07-18 13h44m10s-第1部分
    • 2014-07-18 13h44m10s-第2部分
    • 等等
    如果此批处理文件不存在(例如,从上一次运行中),则将复制到由该批处理文件创建的目录2014-07-18 13h44m10s-组视频

    下一批代码将文件移动到创建的目录中,并删除名称为部分的目录

    @echo off
    setlocal enabledelayedexpansion
    cd /d "C:\test\test\test"
    set GroupVideoDirectory=
    
    for /f "delims=" %%a in ('dir *part* /b /ad /ODN ') do (
        set "DirName=%%a"
        if "!GroupVideoDirectory!"=="" (
           set "GroupVideoDirectory=!DirName:~0,-9! - GROUP VIDEO"
           if not exist "!GroupVideoDirectory!" mkdir "!GroupVideoDirectory!"
        )
        copy /Y "%%a\*.*" "!GroupVideoDirectory!" >nul
    )
    endlocal
    
    @echo off
    setlocal enabledelayedexpansion
    cd /d "C:\test\test\test"
    set GroupVideoDirectory=
    
    for /f "delims=" %%a in ('dir *part* /b /ad /ODN ') do (
        set "DirName=%%a"
        if "!GroupVideoDirectory!"=="" (
           set "GroupVideoDirectory=!DirName:~0,-9! - GROUP VIDEO"
           if not exist "!GroupVideoDirectory!" mkdir "!GroupVideoDirectory!"
        )
        move /Y "%%a\*.*" "!GroupVideoDirectory!" >nul
        rd "%%a"
    )
    endlocal
    

    使用新数据-在文件夹的副本上进行测试。
    如果有多组文件夹,它也可以工作

    @echo off
    cd /d "C:\test\test\test"
    setlocal enabledelayedexpansion
    for /f "delims=" %%a in ('dir *part* /b /ad') do (
       set "name=%%a" 
         if not "%%a"=="!name: - Part 1=!" set "groupfolder=!name:~0,20! - GROUP VIDEO"
       md "!groupfolder!" 2>nul
       move "%%a" "!groupfolder!" >nul
    )
    echo done
    pause
    

    谢谢你,但是文件夹的时间会改变,2将永远不会相同。我已经更新了原来的帖子。好的,它会创建文件夹,但是可以
    将文件夹移动到新创建的文件夹
    GroupVideoDirectory
    。尝试此
    移动/Y“%%a”“!GroupVideoDirectory!”>nul
    好的,通过此更改,它会完美地移动文件夹<代码>移动/Y“%%a”“!GroupVideoDirectory!”>nul