File 批处理文件比较两个文件夹返回的文件不是';t在一个文件夹中

File 批处理文件比较两个文件夹返回的文件不是';t在一个文件夹中,file,batch-file,command,compare,prompt,File,Batch File,Command,Compare,Prompt,我正在尝试创建一个批处理文件,该文件将比较两个文件夹“核心”和“自定义”,并返回非自定义文件的名称 到目前为止,我已经有了这段代码,其中大部分来自另一个关于堆栈溢出的问题。它在每个文件夹中创建文件的“数组”。我如何比较它们 @echo off setlocal enableDelayedExpansion ::build "array" of folders set folderCnt=0 for /f "eol=: delims=" %%F in ('dir /B core') do (

我正在尝试创建一个批处理文件,该文件将比较两个文件夹“核心”和“自定义”,并返回非自定义文件的名称

到目前为止,我已经有了这段代码,其中大部分来自另一个关于堆栈溢出的问题。它在每个文件夹中创建文件的“数组”。我如何比较它们

@echo off
setlocal enableDelayedExpansion

::build "array" of folders
set folderCnt=0
for /f "eol=: delims=" %%F in ('dir /B core') do (
  set /a folderCnt+=1
  set "folder!folderCnt!=%%F"
)

::print menu
for /l %%M in (1 1 %folderCnt%) do echo %%M - !folder%%M!
echo(

::build "array" of folders
set folderCnt=0
for /f "eol=: delims=" %%F in ('dir /B custom') do (
  set /a folderCnt+=1
  set "folder!folderCnt!=%%F"
)

::print menu
for /l %%N in (1 1 %folderCnt%) do echo %%N - !folder%%N!
echo(

pause

test.bat
怎么样

echo y|xcopy /l /d core\* custom\

哪个应该列出core中所有非自定义文件或core中有不同版本的文件?

这里是另一个选项:

@echo off
for %%a in ("core\*.*") do (
if not exist "custom\%%~nxa" echo missing in custom - "%%a"
)
带有“阵列”和菜单的解决方案:

@echo off &setlocal
for /f "tokens=1*delims=:" %%i in ('dir /b /a-d core ^| findstr /n "^"') do set "#%%i=%%j"
for /f "tokens=1*delims==#" %%i in ('set "#"') do echo core:    %%i %%j
for /f "tokens=1*delims=:" %%i in ('dir /b /a-d custom ^| findstr /n "^"') do set "$%%i=%%j"
for /f "tokens=1*delims==$" %%i in ('set "$"') do echo custom:  %%i %%j
for /f "delims=" %%i in ('dir /b /a-d custom') do set "_%%i=%%i"
for /f "tokens=1*delims==#" %%i in ('set "#"') do if not defined _%%j echo missing: %%i %%j
这无法处理
=
的文件名,如果需要,可以修改代码