如何在Windows环境中模拟文件慢速复制?
Windows环境模拟慢速文件复制的方案
一、Windows内置工具(无需额外安装)
1. BITS传输工具(Start-BitsTransfer)
利用Windows自带的后台智能传输服务,可直接指定传输速率上限,精准模拟慢速复制:
Start-BitsTransfer -Source "C:\source\largefile.iso" -Destination "D:\target\" -TransferRateBitsPerSecond 1048576
参数说明:1048576对应每秒1Mbps(兆位/秒),可根据测试需求调整数值,例如524288代表512Kbps。
2. Robocopy间接限速
Robocopy无直接限速选项,但通过/ipg(数据包间隔)参数控制传输间隙,间接降低复制速度:
robocopy "C:\source" "D:\target" largefile.iso /ipg:200
参数说明:/ipg:200表示每个数据包发送后等待200毫秒,数值越大,复制速度越慢,需结合文件大小调整间隔值。
二、第三方轻量工具(可选)
若需要更灵活的限速控制,可使用TeraCopy:
- 图形界面:打开后在设置面板直接调整复制速度上限。
- 命令行模式:
TeraCopy.exe copy "C:\source\file.txt" "D:\target\" /speedlimit:500
参数说明:/speedlimit:500代表每秒500KB的复制速度。
三、简化脚本方案(替代复杂自定义程序)
若偏好脚本实现,可使用PowerShell编写分块复制脚本,通过控制分块大小和延迟模拟慢速:
$source = "C:\source\testfile.bin" $dest = "D:\target\testfile.bin" $bufferSize = 1024 # 每次复制1KB数据 $delayMs = 10 # 每次复制后延迟10毫秒 $streamIn = [System.IO.File]::OpenRead($source) $streamOut = [System.IO.File]::OpenWrite($dest) $buffer = New-Object byte[] $bufferSize while (($bytesRead = $streamIn.Read($buffer, 0, $bufferSize)) -gt 0) { $streamOut.Write($buffer, 0, $bytesRead) Start-Sleep -Milliseconds $delayMs } $streamIn.Close() $streamOut.Close()
调整$bufferSize(分块大小)和$delayMs(延迟时长)即可灵活控制复制速度,比从零编写完整程序更高效。
内容的提问来源于stack exchange,提问作者Gep
相关产品推荐
相关产品推荐

