我一直在尝试将命令链接到首先自行删除应用程序,然后通过vb.net应用程序中的进程删除它所在的目录。就代码而言,这就是我所处的位置。
我找到了一个自行删除应用程序的有用代码示例:
Dim fldpath as String = "C:\test"
Dim inf as ProcessStartInfo = New ProcessStartInfo()
inf.Arguments = "/C choice /C Y /N /D Y /T 3 & Del " & """" Application.ExecutablePath & """"
inf.WindowStyle = ProcessWindowStyle.Hidden
inf.CreateNoWindow = True
inf.Verb = "runas"
inf.UseShellExecute = True
inf.FileName = "cmd.exe"
Process.Start(inf)
Application.Exit()
以上代码可以处理并自行删除应用程序。但是,我也想删除它所在的文件夹。我尝试在进程的参数中链接命令,但只发生应用程序删除并保留文件夹,例如:
inf.Arguments = "/C choice /C Y /N /D Y /T 3 & Del " & """" Application.ExecutablePath & """" & "&rmdir /s /q " & """" & fldpath & """"
连接rmdir命令不会产生结果,即使只是递归删除目录(并且不打扰应用程序删除)似乎也不起作用。
编辑: 继到目前为止给出的评论之后,我还试图简单地递归删除目录而没有成功,也称为参数:
inf.Arguments = "/C choice /C Y /N /D Y /T 3 & rmdir /s /q " & """" & fldpath & """"
以上删除文件但不删除文件夹。如果我显示cmd提示符,则错误是该文件仍由另一个应用程序提供。
inf.Arguments = "/C choice /C Y /N /D Y /T 3 & Del /s /q " & """" & Application.ExecutablePath & """"
以上删除文件没有问题。我需要链接另一个命令来删除包含目录。
进一步澄清。似乎错误“进程无法访问该文件,因为它正被另一个进程使用”与目录有关!我添加了一个空目录和另一个文本文件,然后运行该命令。所有文件都被删除但是/ s关闭时新文件夹失败。
inf.WorkingDirectory = "C:\"
如上所述更改工作目录(从默认情况下,我假设,当前的工作目录)没有产生结果。如上所述,该过程在目录上失败而不是链接,任何见解都将受到赞赏。