我使用以下代码删除旧文件
rem declaration des variables
set path=E:somefiles
set delai_retention=15
rem Purge recursive des fichiers
%WINDIR%system32forfiles /p %path% /s /m * /d -%delai_retention% /c "cmd /c del /q @path"
opsexit %errorlevel%
rem Purge recursive des dossiers vides
%WINDIR%system32forfiles /p %path% /d -%delai_retention% -c "cmd /c if @ISDIR==TRUE rmdir /S /Q @FILE"
opsexit %errorlevel%
但是在每次运行代码时,我的脚本都会以以下错误结束
找不到E:\somefiles\Thumbs.db
如何修复此错误?
首先,提示一下,forfiles无需转到winsys32文件夹即可工作;事实上,winsys32中的每个.exe都可以在没有该代码的情况下使用。没有这样的代码可以减少文件长度,这很好。或者,有些文件需要监督才能删除。使用del/q/f/s,效率更高。不要使用"路径";作为一个名称,是一个系统变量,这会有冲突。我认为cmd/c没用。我认为最好在另一个命令中使用@path而不是@file。这些将是这样的:
rem declaration des variables
set epath=E:somefiles
set delai_retention=15
rem Purge recursive des fichiers
forfiles /p %epath% /s /m * /d -%delai_retention% /c "del /q /f /s @path"
opsexit %errorlevel%
rem Purge recursive des dossiers vides
forfiles /p %epath% /d -%delai_retention% -c "if @ISDIR==TRUE rmdir /S /Q @PATH"
opsexit %errorlevel%
如果您的问题与响应有关,您也可以添加>nul
。比如:
rem declaration des variables
set epath=E:somefiles
set delai_retention=15
rem Purge recursive des fichiers
forfiles /p %epath% /s /m * /d -%delai_retention% /c "del /q /f /s @path 0^>nul 1^>nul 2^>nul"
opsexit %errorlevel%
rem Purge recursive des dossiers vides
forfiles /p %epath% /d -%delai_retention% -c "if @ISDIR==TRUE rmdir /S /Q @PATH 0^>nul 1^>nul 2^>nul"
opsexit %errorlevel%
现在,即使在删除文件时遇到一些问题,也不会显示。我希望我帮了你。