我想将我的文件(以及子文件夹)从%LocalAppdata%\A
目录移动到B\App\D
目录。
批处理文件位于B\Bat
目录中。我目前正在执行以下操作来复制文件
%LocalAppdata%\A
到B\App\D
-
MOVE /Y "%LocalAppData%\A\*.*" "%~dp0..\App\D"
(请注意,文件夹B
是一个变量,因此我无法使用它)
以上似乎没有移动子文件夹。
答案 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\"