在工业PC上,有一个运行Windows的恢复分区。在这个WPE环境中,有一些正在运行的批处理脚本,为用户提供了一些选择。例如。“按1表示,按2表示”等。
我目前正在进行一项操作,其中包括将文件移动和删除到外部驱动器。使用以下命令,我可以移动和删除文件:
::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
可以恢复它们,但是它当然不是一个稳定的状态。
根据关于超级用户的问题,可以使用wpeutil reboot
安全地重新启动PC并将所有数据刷新到磁盘。我希望这足以避免损坏的目录,但是在移动和/或删除操作之后,索引似乎被破坏了,因为chkdsk /f
告诉我已恢复了损坏的索引。
move命令是否不同步运行?
也就是说,在执行下一个命令之前,批处理不等待移动完成吗?
如何确保在移动和删除文件时不破坏我的索引?
发布于 2018-07-23 00:46:27
由于move
是同步工作的,而wpeutil reboot
应该将所有缓冲区都刷新到磁盘上,所以我应该对我正在做的事情很满意。但是,通过使用同步并等待它返回,我决定确保所有缓冲区都被刷新到磁盘(即USB驱动器):
move /y "\TmpLogFile\*.gz" "%%d\Backup\TemporaryFiles\"
START /WAIT cmd /c "sync.exe" "-r -e %%d"
wpeutil reboot
%%d
持有分配给USB驱动器的字母。
https://stackoverflow.com/questions/49488829
复制