Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理脚本出错,thumb.db未找到错误_Batch File_Batch Processing_Batch Rename - Fatal编程技术网

Batch file 批处理脚本出错,thumb.db未找到错误

Batch file 批处理脚本出错,thumb.db未找到错误,batch-file,batch-processing,batch-rename,Batch File,Batch Processing,Batch Rename,我使用以下代码删除旧文件 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

我使用以下代码删除旧文件

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可以在不需要转到Win32文件夹的情况下工作;事实上,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%
现在即使在删除文件时遇到问题,也不会显示。
希望我帮了你。

@FILE
只是文件名。改为使用
@PATH
(就像在第一个
forfiles
命令中一样)哦-并且不要使用
PATH
作为变量名。它是一个系统变量,告诉Windows在哪里可以找到它的可执行文件。使用其他名称(如
mypath
文件夹
等)谢谢,我将尝试,并很快将更新您,如果它也适用于相同的脚本如果我试图将路径设置为某个远程计算机值,则不支持unc路径错误如何在set path=//machine/share内指定远程路径值,然后是剩余的行,但它为我提供了不支持的unc路径