我想将我的文件(连同子文件夹)从%LocalAppdata%\A
一个目录移动到B\App\D
另一个目录。
批处理文件位于B\Bat
目录中。我目前执行以下操作以将文件复制
%LocalAppdata%\A
到B\App\D
-
MOVE /Y "%LocalAppData%\A\*.*" "%~dp0..\App\D"
(注意文件夹B
是变量,所以我就是不能用)
以上似乎没有移动子文件夹。
我想将我的文件(连同子文件夹)从%LocalAppdata%\A
一个目录移动到B\App\D
另一个目录。
批处理文件位于B\Bat
目录中。我目前执行以下操作以将文件复制
%LocalAppdata%\A
到B\App\D
-
MOVE /Y "%LocalAppData%\A\*.*" "%~dp0..\App\D"
(注意文件夹B
是变量,所以我就是不能用)
以上似乎没有移动子文件夹。
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
命令(不要跟随属性)并移动所有文件和文件夹,包括那些具有隐藏和/或系统属性的文件和文件夹。
将工作目录设置为父目录。
pushd "%~dp0.." && MOVE /Y "%LocalAppData%\A\*.*" ".\App\D\"