微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将一个目录树的内容移动到另一个目录树的内容?

我有一个目录,其中包含文件和一些级别的子目录:

C:Source

我想将C: Source的内容移动到:

C:Destination

要求:

必须移动C: SourceData中的所有文件和所有子目录

我将在batch file中运行该命令

我无法使用Powershell或任何其他脚本语言

尝试0

是否可以传递一个variables到一个Windows FTP脚本文件

在任务计划程序下运行mstsc.exe作为批处理作业

升级Windows的DOSbatch file

如何在batch file或PowerShell脚本中运行命令“x”次?

从命令提示符运行R时,从R运行命令提示

XcopY /E "C:Source" "C:Destination"

这完美的作品,但它复制而不是移动。 我无法复制,然后删除文件,因为我正在移动一大堆文件,而且没有足够的磁盘空间来同时拥有它们的两个副本。

尝试1

MOVE "C:Source" "C:Destination"

这将整个C: Source目录移动到 C: Destination,所以我最终得到:

C:DestinationSource

尝试2

在这个问题和接受的答案的一些帮助下,我想出了:

for /r "C:Source" %%x in (*) do move "%%x" "C:Destination"

这将移动C: Source中的文件,但不移动子目录或其内容。 请注意,我使用%% x而不是%x,因为我在batch file中使用它。

使用FOR似乎很有前途,但我不确定我是否使用了正确的语法? 我错过了什么吗?

尝试3

正如Nick D所build议的,我尝试重新命名:

重命名“C: Source”目标

对于示例场景,我给这个工作正常。 不幸的是,我真正的目的地目录与Source目录的级别不同,似乎并不支持

C:>REN /? Renames a file or files. RENAME [drive:][path]filename1 filename2. REN [drive:][path]filename1 filename2. Note that you cannot specify a new drive or path for your destination file.

我得到“命令的语法不正确。” 错误,如果我尝试指定一个更复杂的目标path,例如:

RENAME "C:Source" "C:MyOtherDirectoryDestination" RENAME "C:Source" "MyOtherDirectoryDestination"

一个JAR文件如何删除自己?

如何用用户input文件名和文件编号创build1到N个文件

按批文件名前缀的顺序读取目录中的文件

使用* .bat CMD行创build* .reg文件

错误使用JScript在.bat文件生成ALT + object.SendKeys(string)

更新

调整后的代码一个。 检查目标文件夹是否已经存在,在这种情况下,移动该文件夹中的文件(并继续遍历源目录结构),否则移动批量文件夹。

在脚本结尾处,源文件夹将被完全删除,以消除已将其文件移到目标文件夹中已存在的文件夹(意味着这些文件夹已被清空但未被删除文件夹)的文件夹。

另外,我们检查一个文件夹是否都是空的,并且已经存在于目的地,在这种情况下,我们什么也不做(把源文件夹留在脚本的最后一行)。 不这样做会导致“文件名,目录名称或卷标语法不正确”。 错误

唷! 请让我知道你如何继续下去! 我已经测试了这个,它似乎运作良好。

for /d /r "c:source" %%i in (*) do if exist "c:destination%%~ni" (dir "%%i" | find "0 File(s)" > NUL & if errorlevel 1 move /y "%%i*.*" "c:destination%%~ni") else (move /y "%%i" "c:destination") move /yc:source*.* c:destination rd /s /qc:source

毫无疑问使用robocopy。 这是一个简单但非常有用的工具。

robocopy /move /e sourcedir destdir

这将移动所有的文件文件夹,包括空的,删除每个原始文件后,它已经移动。

如果您没有安装robocopy,可以单独下载,也可以将其作为Microsoft资源工具包的一部分下载。

由于XcopY的工作,你可以使用XcopY和DELETE,这是一个解决方法,但应该工作?

在Vista上使用

robocopy源目标/ MIR

/ MIR ..镜像一个完整的目录树(也删除目标文件

其他

XcopY

当然你必须删除源码:)

我有一个目录,其中包含文件和一些级别的子目录:

C:源

我想将C: Source的内容移动到:

C:目的地

也许我错过了一些东西,但不能只是重命名文件夹?

在Twitter上发送:尝试将尝试3与尝试1结合。重命名获取目标文件夹正确,然后将“目标”移动到正确的位置。

@echo on set SOURCE=C:Source set DESTINATION=C:Destination xcopy %sOURCE%* %DESTINATION%* /s /e /i /Y PAUSE

我使用这样的批处理文件

或者直接致电:

xcopy C:Source* C:Destination* /s /e /i /Y

也许有点脱离主题,但仍然有用:

有些人建议只复制+删除文件,但移动文件是不一样的复制+删除

使用(x)复制功能时,可以在硬盘上的同一卷分配新空间 。 复制文件后, 文件文件所需的旧分配空间)被标记删除 。 虽然您将获得与最终用户相同的结果,但移动会产生不同的效果

移动文件实际上只改变MFT (主文件表)中的一些记录。 这些更改只包含用户找到其文件的不同路径。 在物理上,这些文件仍然保留在硬盘上的相同扇区中。

我认为你能做的最简单的事情就是修改你的尝试2

MOVE "C:Source" "C:Destination"

MOVE "C:Source*" "C:Destination"

KISS

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐