Die Standard-Windows-Konsolenanwendung FINDSTR für diese Aufgabe ist auf jeden Fall eine sehr gute Wahl, da sie unten durch den Code zu sehen ist.
@echo off
setlocal
set "ListFiles=%~dp0FileList.txt"
set "ListExist=%~dp0Exist.txt"
set "ListMissing=%~dp0NotExist.txt"
set "ListExtra=%~dp0Extra.txt"
set "ListCurrent=%TEMP%\ListCurrent.tmp"
rem Get list of all files in current directory and its subdirectories with
rem full path into a temporary list file. If the current directory tree
rem contains no file, delete empty list file and exit batch processing.
dir /A-D /B /ON /S >"%ListCurrent%" 2>nul
if errorlevel 1 (
copy "%ListFiles%" "%ListMissing%" >nul
if exist "%ListExist%" del "%ListExist%"
if exist "%ListExtra%" del "%ListExtra%"
goto EndBatch
)
%SystemRoot%\System32\findstr.exe /I /L /X /G:"%ListFiles%" "%ListCurrent%" >"%ListExist%"
%SystemRoot%\System32\findstr.exe /I /L /X /V /G:"%ListExist%" "%ListFiles%" >"%ListMissing%"
%SystemRoot%\System32\findstr.exe /I /L /X /V /G:"%ListExist%" "%ListCurrent%" >"%ListExtra%"
:EndBatch
del "%ListCurrent%"
endlocal
Dieser Batch Code erfordert, dass FileList.txt
im Verzeichnis der Batch-Datei der Dateinamen mit vollständigem Pfad enthält.
Hinweis:%~dp0
wird auf den Pfad der Stapeldatei erweitert, die bereits mit einem umgekehrten Schrägstrich endet. Geben Sie daher keinen zusätzlichen Backslash vor dem Dateinamen an.
Um die verwendeten Befehle und ihre Funktionsweise zu verstehen, öffnen Sie ein Eingabeaufforderungsfenster, führen Sie die folgenden Befehle aus und lesen Sie alle Hilfeseiten, die für jeden Befehl angezeigt werden, sorgfältig durch.
copy /?
del /?
dir /?
echo /?
endlocal /?
findstr /?
... wichtigsten zu verstehen, wie das Filtern der Listen arbeiten.
goto /?
if /?
rem /?
set /?
setlocal /?
Siehe auch den Microsoft Artikel über Using command redirection operators für eine Erklärung der >
, >nul
und 2>nul
.
Sie könnten in der 'findstr' Befehl interessieren:' findstr/X/L/C: "Dateiname" "filelist.txt" 'gibt einen' ErrorLevel' von '0' bei 'file_name' hat wurde sonst in 'filelist.txt' und' 1' gefunden; Geben Sie 'findstr /?' in ein Eingabeaufforderungsfenster für Hilfe ... – aschipfl