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

Batch file 批处理-根据名称将文件夹和内容移动到其他驱动器,batch-file,move,xcopy,Batch File,Move,Xcopy,第一篇文章,我已经搜索并尝试了这个,但似乎找不到像这样的东西 好的,所以我花了一些时间在这上面,碰到了一堵墙。如果我使用move在单个驱动器上移动,我理解并可以编写此代码,但一旦我尝试实现xcopy,使其能够跨驱动器工作,我就开始挣扎 这就是我目前所拥有的。这将在目录名中查找左括号,如果有,它将尝试将目录移动到另一个文件夹。这是正确的 @echo off SETLOCAL EnableDelayedExpansion for /d %%f in ("%C:\Testing\Folder1%\

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

好的,所以我花了一些时间在这上面,碰到了一堵墙。如果我使用move在单个驱动器上移动,我理解并可以编写此代码,但一旦我尝试实现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文件夹-不移动

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

我想我可能必须先在新位置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
)
我感谢你能给予的一切帮助


Jay

我使用以下方法,也许对你有用:

@echo off
setlocal enabledelayedexpansion

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

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

我不知道为什么这个格式不正确,但我最终发现xcopy的问题与它没有复制的问题相同。不知道我做错了什么。以下是结果。C:\Testing>xcopy C:\Testing\Folder1\Test 2 1 2013 C:\Testing\Folder2\Testing\Folder1\Test 2 1 2013/s/i 0文件复制C:\Testing>xcopy C:\Testing\Folder1\Test2 2003 C:\Testing\Folder2\Testing\Folder1\Test2 2003/s/i 0文件复制C:\Testing>xcopy C:\Testing\Folder1\t这是2008年的测试C:\Testing\Folder2\Testing\Folder1\这是测试2008/s/i 0文件的副本这些测试文件夹是吗。。。如果它们是空的,您可能需要/e开关。看,就是这样。非常感谢。它似乎正在folder2中创建测试文件夹,所以它的路径是C:\testing\folder2\testing\Folder1,但我可以找到这个路径。谢谢你的帮助!不客气。。。如果%%~pni是扩展修饰符,它会将迭代/变量%%I扩展到其路径和名称。您可能只需要n扩展,并在\之前提供路径。有关详细信息,请参阅。祝你好运