C:Source
我想将C: Source的内容移动到:
C:Destination
要求:
必须移动C: SourceData中的所有文件和所有子目录
我将在batch file中运行该命令
我无法使用Powershell或任何其他脚本语言
尝试0
是否可以传递一个variables到一个Windows FTP脚本文件?
在任务计划程序下运行mstsc.exe作为批处理作业
升级Windows的DOSbatch file
如何在batch file或PowerShell脚本中运行命令“x”次?
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"
如何用用户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
其他
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] 举报,一经查实,本站将立刻删除。