下面的批处理文件将第一个参数中指定的文件夹向上移动第二个参数中指定的数量:
@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%"