批量移动文件会破坏Windows PE中运行的目录

时间:2018-03-26 10:05:35

标签: batch-file winpe

在工业PC上有一个运行Windows PE的恢复分区。在此WPE环境中,有一些运行的批处理脚本为用户提供了一些选择。例如。 "按1为此,按2为#34;等

我目前正在开展一项操作,包括将文件移动和删除到外部驱动器。使用以下命令,我可以移动和删除文件:

::Create a new folder on the external drive
if not exist "F:\Backup\TemporaryFiles\" mkdir F:\Backup\TemporaryFiles

::Move log files
move /y "%dataVolume%\system\LogFile\*.log" "F:\Backup\TemporaryFiles\"
move /y "%dataVolume%\system\LogFile\*.gz" "F:\Backup\TemporaryFiles\"

::Delete PNG files
del "%dataVolume%\system\LogImg\*.png" /f/q

:: Reboot safely
wpeutil reboot

但是,重新启动文件移动的源目录以及外部驱动器上的目标目录已损坏 。使用chkdsk可以恢复它们,但当然它不是一个稳定状态。

根据this question on Super Userwpeutil reboot可用于安全地重启PC并将所有数据刷新到磁盘。我希望这足以避免损坏目录,但似乎在移动和/或删除操作后索引被破坏,因为chkdsk /f告诉我腐败索引已经恢复。

移动命令是否未同步运行?

即。批处理是否等到移动完成才执行下一个命令?

如何确保在移动和删除文件时我的索引不会被销毁?

1 个答案:

答案 0 :(得分:0)

由于outputShapesForInputShapes正在同步工作,并且move应该将所有缓冲区刷新到磁盘,所以我应该做的很好。但是,我决定通过使用sync并等待它返回来确保所有缓冲区实际上都已刷新到磁盘(即USB驱动器)中:

wpeutil reboot

move /y "\TmpLogFile\*.gz" "%%d\Backup\TemporaryFiles\" START /WAIT cmd /c "sync.exe" "-r -e %%d" wpeutil reboot 保留分配给USB驱动器的字母。