在Windows 7中制作了一个bat文件:
rem设置UD_LOG_FILE_PATH =%temp%\ defrag_native.log C: cd \ Windows \ System32 udefrag.exe --optimize-mft C: udefrag.exe -o C: 暂停
我可以双击bat文件并运行OK。 但是,bat文件是从正在运行的程序调用的。 当程序发送到bat文件时,会产生以下错误:
'C:\ Windows \ System32 \ udefrag.exe'不被识别为内部或外部命令,可操作的程序或batch file。
调用是在VB6中使用Shell完成的。 尝试了不同的事情。 首先直接调用bat文件,然后用C:\ Windows \ System32 \ cmd.exe / c,然后用C:\ Windows \ SysWOW64 \ cmd.exe / c。 所有产生相同的结果。 bat文件运行但是不会运行bat文件内的exe文件。 但如果直接运行,bat文件工作正常。 请帮忙。 谢谢
谷歌说,udefrag.exe是第三方程序。 如果它位于c:\ windows \ system32中,那么它位于路径上,并且只需要批处理文件中的最后3行。 先试试看看是否需要提升权限。 如果您关闭了UAC,请将其重新打开以进行测试。 您的VB程序可能没有正确的权限。
@echo off udefrag.exe --optimize-mft C: udefrag.exe -o C: pause
我使用任务调度程序来解决这个问题。 创建的任务没有名为“碎片整理”的触发器。 任务调用bat文件。 从正在运行的程序调用bat文件,而不是从以下命令:
schtasks / Run / TN碎片整理
这通过任务调度程序运行bat文件。 我不知道为什么我必须这样做,但它运作良好。