我有一个批处理文件,删除某个目录中的所有文件。当我以手动方式运行时,这非常正常,但是当从应用程序运行它时,它不会删除文件。
批处理文件代码:
cd "C:\Users\namehere\Desktop\Test"
del *.* /q
taskkill /im Presenter.exe
START D:\PresenterInstallFolder\Presenter\Presenter.exe
exit
批处理文件会在我的应用程序中加载时触发。如上所述,当手动运行时,它完全正常。
我正在使用System.Diagnostics.Process.Start()
启动批处理文件
答案 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
希望这有帮助!