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

Batch - Moving folders and contents based on name to a different drive

首先 post,我搜索并尝试过这个,但似乎找不到类似的东西。

好的,所以我在这上面花了一些时间,但碰壁了。如果我在单个驱动器上移动(移动),我理解并可以编写代码,但是一旦我尝试实现 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) - 移动

示例文件夹 - 不要移动

现在,当我发现移动不适用于不同的驱动器(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
)

感谢您提供的所有帮助。

周杰伦

我用的是下面的,也许对你有用:

@echo off
setlocal enabledelayedexpansion

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

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