使用制作了一个简单的脚本蝙蝠要从中删除所有文件的文件:
C:\Users\%USERNAME%\AppData\Local\Temp
。
我想在 PC 上所有用户登录个人资料时删除这些内容。
因此我将 bat 文件放入视窗启动文件夹:
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
这是我的蝙蝠文件:
cd C:\Users\%USERNAME%\AppData\Local\Temp
if exist "C:\Users\%USERNAME%\AppData\Local\Temp" del /F /Q *.*
问题是:
这种方法安全吗?
如果不安全,可能出现什么问题?我应该使用某种错误处理程序吗?
我可以安全地添加吗?if exist "C:\Users%USERNAME%\AppData\Local\CrashDump" del /F /Q .
答案1
为什么没有一行带有安全操作符重定向(条件执行&&
) 和系统变量:
%userprofile% // For your folder C:\Users\%USERNAME%\AppData\Local\CrashDump
%temp% or %tmp% // For your folder C:\Users\%USERNAME%\AppData\Local\Temp
2>nul @(cd /d "%userprofile%\AppData\Local\CrashDump" && del /q /f *.*)
2>nul @(cd /d "%temp%" && del /q /f *.*)
观察:1代替cd
到cd /d
观察:2 2>nul
可以忽略块内命令执行中的错误(command
1,command
2,command
n...),例如不存在的文件夹、正在使用的文件等。
观察:3 一个命令可以输出到多个流,并且可以将每个流重定向到不同的目的地。因此,2>nul
简单1>nul
地说,错误输出和正常输出将被重定向到 nul。因此不会输出任何内容。
答案2
这不安全。首先,您需要在将当前目录更改为该文件夹之前检查该文件夹是否存在。
@echo off
set "_path=C:\Users\%USERNAME%\AppData\Local\Temp"
if exist "%_path%" (
cd "%_path%"
del /F /Q *.*
)