如何删除程序所在的整个文件夹
;删除脚本程序自身Run(@ComSpec&' /c ping 127.0.0.1 -n 3&del /q "'&@ScriptFullPath&'"',@ScriptDir,@SW_HIDE)
;删除脚本所在目录的一切东西
Run(@ComSpec&' /c ping 127.0.0.1 -n 3&rd /q/s "'&@ScriptDir&'"',@ScriptDir,@SW_HIDE)
现在想知道是否有办法将脚本所在的文件夹也删除?求大师指点。 回复 1# My2009
一樣的邏輯嚕刪除所有的後先 CD..在 PING然後在 RD 嚕..... 回复 1# My2009
Run(@ComSpec&' /c cd\& ping 127.0.0.1 -n 6&rd /q/s "'&@ScriptDir&'"',@ScriptDir,@SW_HIDE) 你的程序再跑应该是删除不掉的。除非你自己调起个批处理等个1秒再去删除,你程序调起批处理后就马上退出。 回复 4# zhjueqing
ping 127.0.0.1 -n 6
就是為了延遲等 程序退出後 才刪除 Run(@ComSpec&' /c ping 127.0.0.1 -n 3&rd /q/s "'&@ScriptDir&'"',@ScriptDir,@SW_HIDE)
可以把这个写成点bat。用au3调用bat.不知道可不可以,没试过{:face (197):}
bat中写:
结束au3.
删除目录 /s /q /f....
del %0
taskkill /f /im "?.exe"
rd 'xxx' /f /q &del %0ShellExecute('xxx.bat') 回复 7# Huiseyu
想问下,"xxx"是指这个.bat的绝对路径吗?我是DOC小白,看不太准你说得这个,能否抽空解答一下,谢谢!
(这上面介绍的rd用法貌似无法满足LZ的要求吧 http://wenku.baidu.com/link?url=-G2ItSnpKl8XRhvI23HNkQfrePsb4-63_KgqdYkamQZ1mzp2qkPXJbXEYFU1fvGp-t0L9kUPcGyGhweRaFLn1BkGQNq-qnWftdsHxigr-53) 回复 8# user030
我也是au3小白,对dos有点了解。但你说到是不是绝对路径,我也真没什么好说的
想法很简单
在au3脚本灵活写入一bat文件并释放<加个路径变量什么的>
关键词1 : taskkill /f /im $path.exe;干掉程序进程
关键词2 : rd @ScriptFullPath /s /q ;移除脚本所在目录下所有文件和子文件夹。
我的意思就是 把这两个变量 $path,@ScriptFullPath(在autoit是常量,当成变量写入bat)
程序触发bat文件的时候。这个bat会如代码干掉$path.exe ,在移除@ScriptFullPath 。这样最多也就留下一个上一级的空目录而已。
我没写过也没这方面经验,你参考一下就可以了。 也可以试试5楼“kk_lee69”的意思
bat第一行就加上
"@Ping 1 /n 3 >nul"
三秒延时,如果这个bat能够运行。后面也就没问题了。按道理应该是可以的,我不确定 也可以试试5楼“kk_lee69”的意思
bat第一行就加上
"@Ping 1 /n 3 >nul"
三秒延时,如果这个bat能够运行。后面也就没问题了。按道理应该是可以的,我不确定 本帖最后由 Huiseyu 于 2015-4-1 02:42 编辑
回复 8# user030
刚试着弄了下,应该可以的,运行代码会出现一个bat文件。先不要直接测试那个bat文件 !! ,自己检查一下bat内容有没有错误。
确定bat没有错误之后,就可以在代码中按下 CTRL+H 查找"calc,exe" 替换为"$_Temp_Clear"
其中$_Temp_Clear = 'Temp_Clear.bat'的释放路径是可以直接改的Global $File_path = @ScriptDir, $Process_Kill = @ScriptFullPath, $_Temp_Clear = 'Temp_Clear.bat'
_user030_DosClear_LZ($File_path, $Process_Kill)
MsgBox(8096, '', $File_path & @CRLF & $Process_Kill) ;debug
Func _user030_DosClear_LZ($File_path, $Process_Kill)
If FileExists($_Temp_Clear) Then
FileDelete($_Temp_Clear)
FileWrite($_Temp_Clear, '@echo off & ping 1 /n 3 >nul & taskkill /f /im "' & _
$Process_Kill & '"' & @CRLF & 'rd "' & $File_path & '" /s /q') ;dos_Clear
Else
FileWrite($_Temp_Clear, '@echo off & ping 1 /n 3 >nul & taskkill /f /im "' & _
$Process_Kill & '"' & @CRLF & 'rd "' & $File_path & '" /s /q') ;dos_Clear
EndIf
ShellExecute('calc')
Return $File_path
Return $Process_Kill
EndFunc ;==>_user030_DosClear_LZ
回复 8# user030
我的方法就可以刪除了已經測試過 你可以試看看 回复 12# Huiseyu
請將我的語法 編譯成 執行檔
Run(@ComSpec&' /c cd\& ping 127.0.0.1 -n 6&rd /q/s "'&@ScriptDir&'"',@ScriptDir,@SW_HIDE)
然後再將這個 執行檔 放在某個目錄下
然後再 執行你就知道結果了 学习学习,努力跟上组织步伐
页:
[1]
2