0

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

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

(注意文件夹B是变量,所以我就是不能用)

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

4

2 回答 2

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命令(不要跟随属性)并移动所有文件和文件夹,包括那些具有隐藏和/或系统属性的文件和文件夹。

于 2013-10-03T04:38:37.140 回答
1

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

pushd "%~dp0.." && MOVE /Y "%LocalAppData%\A\*.*" ".\App\D\"
于 2013-10-02T16:15:11.483 回答