【问题标题】:Create new folder & rename it & move all folders with special name into newly created folder创建新文件夹并重命名并将所有具有特殊名称的文件夹移动到新创建的文件夹中
【发布时间】:2014-07-18 14:54:11
【问题描述】:

我有这个根据用户需求执行的代码。它会在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 - Part 1

  1. 复制文件夹名称并将2014-07-18 13h44m10s - Part 1 重命名为2014-07-18 13h44m10s - GROUP VIDEO,而不创建临时目录tempgroup。这样做的原因是为了防止在再次执行脚本时创建tempgroup 文件夹。

  2. 将包含单词PART的所有文件夹移动到2014-07-18 13h44m10s - GROUP VIDEO

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

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

上面的文件夹应该移动到这个文件夹中

2014-07-18 13h44m10s - GROUP VIDEO

提前致谢

【问题讨论】:

    标签: batch-file batch-processing


    【解决方案1】:

    以下批处理代码复制所有子目录中所有名称为part的文件(但不包括其子目录)到带有-GROUP VIDEOS的目录> 在名称中附加到第一个目录的日期/时间字符串,名称中包含 part

    @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
    

    换句话说,所有来自子目录的文件,如

    • 2014-07-18 13h44m10s - 第 1 部分
    • 2014-07-18 13h44m10s - 第 2 部分
    • 等等

    复制到目录 2014-07-18 13h44m10s - GROUP VIDEO 如果该批处理文件尚不存在(例如从以前的运行)创建。

    下一个批处理代码将文件移动到创建的目录中,并删除名称为part的目录。

    @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
    

    【讨论】:

    • 好的,它会创建文件夹但是是否可以将move 文件夹放入新创建的文件夹GroupVideoDirectory
    • 试试这个move /Y "%%a" "!GroupVideoDirectory!" >nul
    • 好的,通过此更改,它可以完美地移动文件夹。 move /Y "%%a" "!GroupVideoDirectory!" >nul
    【解决方案2】:

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

    @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 永远不会相同。我已经更新了原帖。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多