【问题标题】:batch command copy or move a folder to parent folder as many level/s specified批处理命令将文件夹复制或移动到指定级别的父文件夹
【发布时间】:2014-04-21 22:53:51
【问题描述】:

我的新问题与我发布的旧问题有关。

我已经发布了这个问题

7zip 命令用于提取具有完整路径的文件夹到特定文件夹但不包括父源路径。

我得到 "i:\delete\rising\dawn\folder2"

由此引发了一个新问题。

我想将文件夹“folder2”复制/移动到父文件夹 2 级(这意味着两次到父文件夹)

i:\delete\folder2

OR 在案例 3 中升级。

i:\folder2

即“folder2”应按我指定的次数复制/移动到上层(父文件夹)

谢谢

【问题讨论】:

    标签: batch-file command directory command-line-arguments parent


    【解决方案1】:

    下面的批处理文件将第一个参数中指定的文件夹向上移动第二个参数中指定的数量:

    @echo off
    setlocal EnableDelayedExpansion
    
    for %%a in ("%~1") do set "newPath=%%~DPa" & set "folder=%%~Na"
    for /L %%i in (1,1,%2) do for %%a in ("!newPath:~0,-1!") do set "newPath=%%~DPa"
    ECHO move "%~1" "%newPath%%folder%"
    

    例如,如果之前的批处理文件名为MoveUp.bat

    MoveUp "i:\delete\rising\dawn\folder2" 2
    

    如果显示的move 命令正确,请删除ECHO 部分以执行该命令。

    编辑回复评论

    输出示例:

    C:\> MoveUp "i:\delete\rising\dawn\folder2" 2
    move "i:\delete\rising\dawn\folder2" "i:\delete\folder2"
    
    C:\> MoveUp "i:\delete\rising\dawn\folder2" 3
    move "i:\delete\rising\dawn\folder2" "i:\folder2"
    

    以与上述示例相同的方式运行程序,并确认您得到相同的输出。

    如果您得到不同的输出,请将其发布在您的 Windows 版本之外。

    如果你得到相同的输出,请解释为什么这个输出不能解决你的问题,并指定应该是什么输出。

    记住程序只是显示命令!它不执行它。如果你想让程序执行move命令,你必须这样删除最后一行的ECHO部分:

    move "%~1" "%newPath%%folder%"
    

    【讨论】:

    • 对不起,但“不起作用”非常模糊......请参阅上面我的答案中的编辑。
    猜你喜欢
    • 1970-01-01
    • 2016-01-30
    • 2015-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多