批处理 - 根据名称将文件夹和内容移动到其他驱动器

时间:2015-03-30 20:52:14

标签: batch-file move xcopy

第一篇文章,我已经搜索过并试过这个但是似乎找不到这样的东西。

好的,所以我花了一些时间在这上面并且碰壁了。我理解并且可以编写这个,如果我移动一个驱动器(移动)但是一旦我尝试实现xcopy以便它将工作交叉驱动器我开始挣扎。

这是我到目前为止所拥有的。这将在左括号的目录名称中查找,如果有,它将尝试将目录移动到另一个文件夹。这可以正常工作。

@echo off

SETLOCAL EnableDelayedExpansion

for /d %%f in ("%C:\Testing\Folder1%\*") do (
SET "folder=%%f"
if /I NOT "!folder:(=!"=="!folder!" move "%%f" C:\Testing\Folder2
)

示例目录名称如下

假期(2004年) - 移动

佛罗里达度假 - 不要搬家

纽约(2014) - 移动

Exmaple Folder - 不要移动

现在,当我发现移动不适用于不同的驱动器(D :(源)和E :(目的地))我发现我需要使用Xcopy。当我尝试使用xcopy而不是移动时,它将永远不会移动任何文件或文件夹。

我想我可能必须首先在新位置mkdir文件夹,然后移动所有内容并删除旧文件夹,但是我需要从完整路径中对目录名称进行子串。我可能会这样做,但是在我花半天时间用谷歌搜索如何去做之前想要和你们核实一下。在过去的几天里,我已经把头撞到了墙上,我觉得有些专家可以提供帮助。

尝试xcopy

@echo off

SETLOCAL EnableDelayedExpansion

for /d %%f in ("%D:\Folder1%\*") do (
SET "folder=%%f"
if /I NOT "!folder:(=!"=="!folder!" xcopy "%%f" E:\Folder2
)

我感谢您提供的任何和所有帮助。

1 个答案:

答案 0 :(得分:0)

我使用以下内容,也许它对您有用:

@echo off
setlocal enabledelayedexpansion

for /d %%i in (C:\TEST\*(*) do (
xcopy "%%i" "D:\%%~pni" /s /i
)
pause

替换相关目录的路径。祝你好运!