首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在批处理中移动文件会损坏在Windows中运行的目录

在批处理中移动文件会损坏在Windows中运行的目录
EN

Stack Overflow用户
提问于 2018-03-26 10:05:34
回答 1查看 284关注 0票数 1

在工业PC上,有一个运行Windows的恢复分区。在这个WPE环境中,有一些正在运行的批处理脚本,为用户提供了一些选择。例如。“按1表示,按2表示”等。

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

代码语言:javascript
代码运行次数:0
运行
复制
::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命令是否不同步运行?

也就是说,在执行下一个命令之前,批处理不等待移动完成吗?

如何确保在移动和删除文件时不破坏我的索引?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-23 08:46:27

由于move是同步工作的,而wpeutil reboot应该将所有缓冲区都刷新到磁盘上,所以我应该对我正在做的事情很满意。但是,通过使用同步并等待它返回,我决定确保所有缓冲区都被刷新到磁盘(即USB驱动器):

代码语言:javascript
代码运行次数:0
运行
复制
move /y "\TmpLogFile\*.gz" "%%d\Backup\TemporaryFiles\"
START /WAIT cmd /c "sync.exe" "-r -e %%d"
wpeutil reboot

%%d持有分配给USB驱动器的字母。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49488829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档