首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >批处理文件比较两个文件夹返回不在一个文件夹中的文件

批处理文件比较两个文件夹返回不在一个文件夹中的文件
EN

Stack Overflow用户
提问于 2013-05-02 23:05:10
回答 3查看 2.5K关注 0票数 0

我正在尝试创建一个批处理文件,它将比较两个文件夹"core“和" custom”,并返回不在自定义中的文件的名称。

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

代码语言:javascript
运行
复制
@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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-02 23:28:10

怎么样

代码语言:javascript
运行
复制
echo y|xcopy /l /d core\* custom\

哪个应该列出核心中所有不在自定义中的文件,或者核心中有不同版本的文件?

票数 0
EN

Stack Overflow用户

发布于 2013-05-03 14:23:07

这是另一个选择:

代码语言:javascript
运行
复制
@echo off
for %%a in ("core\*.*") do (
if not exist "custom\%%~nxa" echo missing in custom - "%%a"
)
票数 2
EN

Stack Overflow用户

发布于 2013-05-03 14:50:09

带有“数组”和菜单的解决方案:

代码语言:javascript
运行
复制
@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

这不能用=处理文件名,如果有必要,可以修改代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16341468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档