【问题标题】:Batch file to recursively move files to first level directory from deeper subdirectories批处理文件以递归方式将文件从更深的子目录移动到第一级目录
【发布时间】:2013-08-20 03:26:33
【问题描述】:

我有一个硬盘驱动器,其中的文件和文件夹以类似的方式排序:

F:\folder1\folder\folder\file.rar

F:\folder1\folder\folder\file1.rar

F:\folder1\folder\folder\file2.rar

F:\folder2\folder\file.rar

F:\folder2\folder\file1.rar

F:\folder3\folder\file.rar

F:\folder3\folder\folder\folder\file.rar

我想将此驱动器中的所有文件移动到 F:\\*\ ,如果找到重复的文件名,请重命名,然后递归删除空文件夹。这些文件夹太多了,无法找出每个父目录的深度。执行批处理脚本后,文件夹应如下所示:

F:\folder1\file.rar

F:\folder1\file1.rar

F:\folder1\file2.rar

F:\folder2\file.rar

F:\folder2\file1.rar

F:\folder3\file.rar

F:\folder3\file(1).rar

F:\\*\ 级别中可能存在包含文件的文件夹。我希望他们留在原地。

【问题讨论】:

    标签: windows recursion batch-file move directory


    【解决方案1】:

    试试这个:

    @ECHO OFF &SETLOCAL
    FOR /r "F:\" %%a IN (*.rar) DO (
        SET "fname=%%~nxa"
        SET "fpath=%%~fa"
        FOR /f "tokens=1,2 delims=\" %%b IN ("%%~fa") DO SET "targetfolder=%%~b\%%~c"
        SETLOCAL ENABLEDELAYEDEXPANSION
        CALL :moveit "!fpath!" "!targetfolder!" "!fname!"
        ENDLOCAL
    )
    GOTO :eof
    
    :moveit
    SETLOCAL
    SET "nname=%~3"
    :loop
    SET /a fcount+=1
    IF EXIST "%~2\%nname%" (
        SET "nname=%~n3 (%fcount%)%~x3"
        GOTO :loop
    )
    ECHO MOVE "%~1" "%~2\%nname%"
    MOVE "%~1" "%~2\%nname%"
    ENDLOCAL
    EXIT /b
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-30
      • 2013-04-21
      • 2015-03-01
      • 2021-07-15
      • 2020-10-07
      • 1970-01-01
      • 2013-04-05
      • 2010-09-10
      相关资源
      最近更新 更多