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