批处理文件在通过应用程序运行时不删除文件

时间:2015-09-01 11:36:48

标签: batch-file

我有一个批处理文件,删除某个目录中的所有文件。当我以手动方式运行时,这非常正常,但是当从应用程序运行它时,它不会删除文件。

批处理文件代码:

cd "C:\Users\namehere\Desktop\Test" 
del *.* /q
taskkill /im Presenter.exe
START D:\PresenterInstallFolder\Presenter\Presenter.exe
exit

批处理文件会在我的应用程序中加载时触发。如上所述,当手动运行时,它完全正常。

我正在使用System.Diagnostics.Process.Start()启动批处理文件

1 个答案:

答案 0 :(得分:1)

虽然TASKLIST和TASKKILL工作,但你应该能够做得更清洁一点:

del /q "C:\Users\namehere\Desktop\Test\*.*" 
WMIC Path win32_process WHERE "CommandLine Like '%Presenter%'" CALL Terminate
START D:\PresenterInstallFolder\Presenter\Presenter.exe
exit

以下情况如何?

del /q "%userprofile%\Desktop\Test\*.*" 
WMIC Path win32_process WHERE "CommandLine Like '%Presenter%'" CALL Terminate
START D:\PresenterInstallFolder\Presenter\Presenter.exe
exit

在我看来,你会想要先终止应用程序,然后删除文件:

WMIC Path win32_process WHERE "CommandLine Like '%Presenter%'" CALL Terminate
del /q "%userprofile%\Desktop\Test\*.*" 
START D:\PresenterInstallFolder\Presenter\Presenter.exe
exit

您可以添加1或2秒睡眠,以便根据需要停止或启动处理时间。

启动程序的其他方法,您可以执行以下操作:

WMIC process  CALL Create "Notepad.exe"

或者,在您的示例中:

wmic process call create "cmd /c start /min D:\PresenterInstallFolder\Presenter\Presenter.exe"

如果您不想开始第二个CMD实例:

wmic process call create "D:\PresenterInstallFolder\Presenter\Presenter.exe"

然后,您应该可以执行以下操作:

CALL C:\ Path \ YourBatchfile.bat

希望这有帮助!