将目录移动到批处理文件目录的一级

时间:2013-10-02 16:01:58

标签: batch-file

我想将我的文件(以及子文件夹)从%LocalAppdata%\A目录移动到B\App\D目录。
批处理文件位于B\Bat目录中。我目前正在执行以下操作来复制文件 %LocalAppdata%\AB\App\D -

MOVE /Y "%LocalAppData%\A\*.*" "%~dp0..\App\D"

(请注意,文件夹B是一个变量,因此我无法使用它)

以上似乎没有移动子文件夹。

2 个答案:

答案 0 :(得分:4)

MOVE和RENAME可以在源掩码中使用通配符处理多个文件。它们也可以与单个文件夹一起使用。但是它们无法在源掩码中使用通配符处理多个文件夹。

因此,您可以使用循环单独移动文件夹,然后使用通配符直​​接移动所有剩余文件。

for /d %%F in ("%LocalAppData%\A\*") do move /y "%%F" "%~dp0..\App\D"
move /y "%LocalAppData%\A\*" "%~dp0..\App\D"

或者只需用一个循环单独移动所有内容。唯一的缺点是,如果文件/文件夹名称中的unicode未映射到活动代码页,则可能会失败。它的效率也有点低,但我认为这并不重要。

for /f "eol=: delims=" %%F in ('dir /b "%LocalAppData%\A\*"') do move /y "%LocalAppData%\A\%%F" move /y "%%F" "%~dp0..\App\D"

最后一种方法的一个优点是您可以将/A选项添加到dir命令(不遵循属性)并移动所有文件和文件夹,包括具有隐藏和/或系统属性的那些。

答案 1 :(得分:1)

将工作目录设置为父目录。

pushd "%~dp0.." && MOVE /Y "%LocalAppData%\A\*.*" ".\App\D\"