簡體   English   中英

批處理腳本以遞歸方式循環子目錄並在2個文件夾中查找丟失的文件

[英]batch script to recursively loop sub-directories and find missing files in 2 folders

我想遞歸比較2個文件夾,並在其中找到丟失的文件。 我正在使用for循環比較2個文件夾,但無法搜索子文件夾。 有人可以幫忙嗎?

這是我嘗試過的代碼,

@echo off
if "%2" == "" GOTO Usage

cd /D %1
if errorlevel 1 goto usage

for %%x in (*.*) do if NOT exist %2\%%x echo missing %2\%%x
cd /D %2
for %%x in (*.*) do if NOT exist %1\%%x echo missing %1\%%x

goto end

:usage
echo Usage %0 dir1 dir2
echo where dir1 and dir2 are full paths
:end

試試看,有關解釋,請參見代碼中的注釋:

@ECHO OFF &SETLOCAL
SET "folder1=this"
SET "folder2=that"

REM delete variables
FOR /f "delims==" %%a IN ('set "$"') DO SET "%%a="

REM scanning folder1
FOR /r "%folder1%" %%a IN (*) DO SET "$%%~nxa=%%~a"

REM compare with folder2
FOR /r "%folder2%" %%a IN (*) DO (
    IF NOT DEFINED $%%~nxa ECHO missing IN %folder1%: %%a
)

REM delete variables
FOR /f "delims==" %%a IN ('set "$"') DO SET "%%a="

REM scanning folder2
FOR /r "%folder2%" %%a IN (*) DO SET "$%%~nxa=%%~a"

REM compare with folder1
FOR /r "%folder1%" %%a IN (*) DO (
    IF NOT DEFINED $%%~nxa ECHO missing IN %folder2%: %%a
)

ECHO Done.
@ECHO OFF
SETLOCAL
XCOPY /l /y /d "%~1\*" "%~2\*"|FIND "\"
XCOPY /l /y /d "%~2\*" "%~1\*"|FIND "\"
GOTO :EOF

沒有嚴格列出一個目錄中的文件,而不是另一個目錄中的文件; 列出那些以及同時存在但具有不同時間戳的那些。

/s添加到XCOPY選項以也掃描子目錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM