我创建了以下批处理文件,用于删除java缓存,IE历史记录,临时文件夹,但它也删除了存储它的文件。
任何人都可以帮我理解批处理文件中的错误吗?
代码
cd C:\Users\username\AppData\LocalLow\Sun\Java\Deployment\cache
del /Q *.*
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 2
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 1
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 16
cd C:\Users\SHIKHA~1.YAD\AppData\Local\Temp
del /Q *.*
cd C:\Windows\Prefetch
del /Q *.*
cd C:\Windows\Temp
del /Q *.*
cd C:\Windows\Downloaded Program Files
del /Q *.*
答案 0 :(得分:1)
cd
方法存在的问题是,如果当前活动目录与目标文件夹不在同一个驱动器中,cd
不会更改驱动器,则del
命令在错误的驱动器中执行。
此外,如果目标文件夹不存在,cd
将无法更改活动目录,但执行仍在继续,代码将删除一组错误的文件。
您可以使用cd /d "c:\...."
确保更改当前活动目录和驱动器,但操作仍可能失败。您可以使用条件执行运算符&&
。
cd /d "x:\somewhere" && del /q *
这意味着:首先更改当前的活动目录,如果命令已经成功,则执行delete命令。
但是,直接指出要删除的内容更容易
del /q "C:\Users\username\AppData\LocalLow\Sun\Java\Deployment\cache\*"
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 2
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 1
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 16
del /q "C:\Users\SHIKHA~1.YAD\AppData\Local\Temp\*"
del /q "C:\Windows\Prefetch\*"
del /q "C:\Windows\Temp\*"
del /q "C:\Windows\Downloaded Program Files\*"