Batch file 检查文件夹是否存在并删除临时文件
我使用批处理文件命令删除系统中的临时文件。命令正常工作 此代码正常工作,但存在一个缺陷:Batch file 检查文件夹是否存在并删除临时文件,batch-file,scripting,Batch File,Scripting,我使用批处理文件命令删除系统中的临时文件。命令正常工作 此代码正常工作,但存在一个缺陷: FOR /D %%p IN ("C:\Temp\*.*") DO rmdir "%%p" /s /q cd c:\temp del /F /s /q *.* >c:\DelTempLog.txt rd /s /q %systemdrive%\$Recycle.bin >c:\DelTempLog.txt FOR /D %%p IN ("C:\Windows\Installer\$PatchC
FOR /D %%p IN ("C:\Temp\*.*") DO rmdir "%%p" /s /q
cd c:\temp
del /F /s /q *.* >c:\DelTempLog.txt
rd /s /q %systemdrive%\$Recycle.bin >c:\DelTempLog.txt
FOR /D %%p IN ("C:\Windows\Installer\$PatchCache$\*.*") DO rmdir "%%p" /s /q
cd C:\Windows\Installer\$PatchCache$
del /F /s /q *.* >c:\DelTempLog.txt
FOR /D %%p IN ("C:\Windows\Temp*.*") DO rmdir "%%p" /s /q
cd C:\Windows\Temp
del /F /s /q *.* >c:\DelTempLog.txt
del /q /s %tmp% >c:\DelTempLog.txt
今天我遇到了一个异常,服务器上不存在c:\temp
文件夹
它删除了c:\windows\system32
下的一半文件
IF
命令rmdir命令只会回显。如果输出(在日志文件中)是正确的,请删除前缀为
rmdir
的echo
命令,然后在当前的批处理之前,尝试
md c:\temp 2>nul
if not exist c:\temp\. echo No c:\temp!&goto :eof
在基本级别上,如果在命令行上指定完整路径,则无法从其他任何位置删除文件
del /F /s /q "c:\temp\*.*?"
在发出命令之前,也不需要更改目录
?
会抑制一个提示,询问您是否确实要删除所有文件。我的首选方法是使用%CD%
内置值,然后尝试移动到文件夹,查看它是否有效,如中所示:
set CURDIR=%CD%
pushd C:\Temp
if '%CD%'=='%CURDIR%' (
echo Failed to move to C:\Temp
) else (
[code to do your deletions]
)
popd
我更喜欢推送和弹出一个目录,而不是硬的CD
,因为这样你就可以随时回到你所在的位置,而不必知道它在哪里
set CURDIR=%CD%
pushd C:\Temp
if '%CD%'=='%CURDIR%' (
echo Failed to move to C:\Temp
) else (
[code to do your deletions]
)
popd