批处理脚本错误与thumb.db找不到错误

问题描述

我正在使用以下代码删除文件

rem declaration des variables
set path=E:\somefiles
set delai_retention=15

rem Purge recursive des fichiers
%WINDIR%\system32\forfiles /p %path% /s /m * /d -%delai_retention% /c "cmd /c del  /q @path"
opsexit %errorlevel%

rem Purge recursive des dossiers vides
%WINDIR%\system32\forfiles /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%

现在即使在删除文件时遇到问题,也不会显示。 希望我能对您有所帮助。