<p>也许不是最快但非常简单的方法:</p>
<pre class="lang-cmd prettyprint-override"><code>@echo off
rem // Change into root directory:
pushd "%~dp0." && (
rem // Outer loop through target directories:
for /D %%J in ("Camera?") do (
rem // Create temporary file with matching contents of current directory:
dir /B /A:-D-H-S "%%~J\*.tif" > "%TEMP%\%%~nxJ.log"
rem // Inner loop through target directories:
for /D %%I in ("Camera?") do (
rem // Avoid comparing current directory with itself:
if /I not "%%~I"=="%%~J" (
rem /* List these files inside of the directory of the inner loop where no
rem respective files inside of the directory of the outer loop are found: */
for /F "delims= eol=|" %%K in ('
dir /B /A:-D-H-S "%%~I\*.tif" ^| findstr /L /I /V /G:"%TEMP%\%%~nxJ.log"
') do (
rem // Actually delete current file:
ECHO del "%%~I\%%K"
)
)
)
rem // Delete temporary file:
del "%TEMP%\%%~nxJ.log"
)
rem // Return from root directory:
popd
)
exit /B
</code></pre>
<p>关键是在目标目录上有两个嵌套循环,以便相互比较,以及<a href="https://ss64.com/nt/findstr.html" rel="nofollow noreferrer" title="FINDSTR">^{<cd1>} command</a>用于从一个目录中筛选出另一个目录中不存在的文件</p>
<p>测试正确的输出后,<strong>删除大写<code>ECHO</code>命令</strong></p>