Batch file 在Windows中复制文件非常慢

Batch file 在Windows中复制文件非常慢,batch-file,command-line,windows-7,copy,robocopy,Batch File,Command Line,Windows 7,Copy,Robocopy,我制作了一个批处理脚本,它使用robocopy反复复制一个文件(例如9次): 这对最初的几个文件有效,但在复制4-5次后,复制会停止并变得非常慢 无论是通过robocopy还是普通的旧Windows GUI复制和粘贴,这都无关紧要 我似乎不明白问题出在哪里。我的电脑上有16GB的内存,虽然Chrome使用了很多内存,但我尝试清除它,但问题依然存在 我唯一的线索是,当我在资源监视器中有大量可用内存时,复制效果很好,但一旦下降到~0 MB,复制速度就会慢下来 复制完成后,Windows中的复制/机

我制作了一个批处理脚本,它使用
robocopy
反复复制一个文件(例如9次):

这对最初的几个文件有效,但在复制4-5次后,复制会停止并变得非常慢

无论是通过
robocopy
还是普通的旧Windows GUI复制和粘贴,这都无关紧要

我似乎不明白问题出在哪里。我的电脑上有16GB的内存,虽然Chrome使用了很多内存,但我尝试清除它,但问题依然存在

我唯一的线索是,当我在资源监视器中有大量可用内存时,复制效果很好,但一旦下降到~0 MB,复制速度就会慢下来

  • 复制完成后,Windows中的复制/机器人复制是否不会释放内存
  • 多次复制同一个文件是否需要付费
  • 我的SSD、文件浏览器或RAM是否还有其他问题
  • 有没有更好的方法来有效地做到这一点
任何关于问题所在的帮助或线索都将不胜感激:)




故障开始时~0MB空闲几乎肯定意味着操作系统正在交换进程。(也许你已经知道这一点)。对于这个问题,您看到的时间是正常的。每当我使用的8GB电脑容量超过75%时,我就会进行交换。通常是因为我在一个浏览器中打开了太多的窗口,而YouTube标签似乎是最大的麻烦。尝试添加30秒的睡眠时间(然后是1、2、3分钟),看看交换问题是否会在短时间内解决?祝你好运。我真的不明白为什么不在(1,1,9)do copy“%filename%”new\[new%%I]%filename%”中为/L%%I使用
将文件复制到已有的子目录
new
,并使用新文件名。但是,复制和机器人复制是分块复制文件,而不是先将整个文件内容加载到RAM中,然后将整个文件内容写入存储介质。因此,在文件复制过程中,COPY或ROBOCOPY只使用了极少量的RAM。您有太多的应用程序使用太多的RAM并行运行,或者有太多的应用程序同时运行所有访问硬盘的程序。@Mofi您完全正确--只是尝试在我的外部HDD(1TB)上运行脚本和文件,而且复制速度快得多,没有任何明显的速度减慢。看来这确实是我的SSD在复制上的瓶颈。如何在resmon中读取磁盘图?或者,我如何检查在任何给定时间访问硬盘的内容以诊断此问题?谢谢:)我不使用Windows资源监视器。我使用免费的Sysinternals(Microsoft),在“选择列”对话框的“进程磁盘”选项卡上添加列读写。该工具有助于找出哪些文件系统访问是由硬盘活动频繁的进程完成的。好的,Process Explorer和Resource Monitor使用相同的Windows内核资源,因此这里没有真正的区别。当故障开始时~0MB空闲几乎肯定意味着操作系统正在交换进程。(也许你已经知道这一点)。对于这个问题,您看到的时间是正常的。每当我使用的8GB电脑容量超过75%时,我就会进行交换。通常是因为我在一个浏览器中打开了太多的窗口,而YouTube标签似乎是最大的麻烦。尝试添加30秒的睡眠时间(然后是1、2、3分钟),看看交换问题是否会在短时间内解决?祝你好运。我真的不明白为什么不在(1,1,9)do copy“%filename%”new\[new%%I]%filename%”中为/L%%I使用
将文件复制到已有的子目录
new
,并使用新文件名。但是,复制和机器人复制是分块复制文件,而不是先将整个文件内容加载到RAM中,然后将整个文件内容写入存储介质。因此,在文件复制过程中,COPY或ROBOCOPY只使用了极少量的RAM。您有太多的应用程序使用太多的RAM并行运行,或者有太多的应用程序同时运行所有访问硬盘的程序。@Mofi您完全正确--只是尝试在我的外部HDD(1TB)上运行脚本和文件,而且复制速度快得多,没有任何明显的速度减慢。看来这确实是我的SSD在复制上的瓶颈。如何在resmon中读取磁盘图?或者,我如何检查在任何给定时间访问硬盘的内容以诊断此问题?谢谢:)我不使用Windows资源监视器。我使用免费的Sysinternals(Microsoft),在“选择列”对话框的“进程磁盘”选项卡上添加列读写。该工具有助于找出哪些文件系统访问是由硬盘活动频繁的进程完成的。当然,Process Explorer和Resource Monitor使用相同的Windows内核资源,所以这里没有真正的区别。
SET filename=some_file.mkv

for /l %%i in (1, 1, 9) do (
    robocopy "." ".\new" "%filename%" :: duplicate
    rename "new\%filename%" "[new%%i] %filename%" :: rename duplicated file
)