【问题标题】:Batch compare 2 directories and output names of folders from 2nd directory批量比较 2 个目录并从第 2 个目录输出文件夹名称
【发布时间】:2021-03-07 09:25:00
【问题描述】:

我想比较 2 个不同目录中存在的同名子文件夹。有时,相同的名称可能在源目录中拼写为小写,在目标目录中拼写为大写。我想从目标目录中输出子文件夹的名称。

@echo off

FOR /F "delims=" %%a IN ('dir /b "%SystemDrive%\Folder1"') do (

    IF exist "%SystemDrive%\Folder2\%%~a" (

    echo %%a

    )
)

exit

我怎样才能做到这一点?

【问题讨论】:

    标签: windows for-loop batch-file cmd echo


    【解决方案1】:
    @echo off
    FOR /D %%a IN ("%SystemDrive%\Folder1\*"') do (
        for %%b in ("%SystemDrive%\Folder2\%%~nxa") do echo %%~nxb
        )
    )
    

    如果文件在folder2 中不存在,则for %%b 根本不会计算,因此您不需要if exist

    【讨论】:

    • 我想要的是在源目录中存在子文件夹的名称,因为它在目标目录中。例如,如果在 Folder1 文件夹中有一个“test”子文件夹(小写),并且在 Folder2 文件夹中有一个同名但大写的子文件夹,如“TEST”,我希望它得到这个名称子文件夹(大写)。
    • 我相应地编辑了我的答案。这样效果更好吗?
    • 它不输出任何东西。
    【解决方案2】:

    我找到了方法:

    @echo off
    FOR /F "delims=" %%a IN ('"dir /b %SystemDrive%\Folder1\*"') do (
        for %%b in ("%SystemDrive%\Folder2\%%~a") do echo %%~nxb
        )
    )
    

    感谢大家的帮助!

    【讨论】:

    • 这没有回答你提出的问题!
    【解决方案3】:

    在 PowerShell 中,这可以通过多种方式完成,其中一种方式如下:

    $dir1 = Get-ChildItem -Path C:\Users\Abraham\Desktop\dir1 -name
    $dir2 = Get-ChildItem -Path C:\Users\Abraham\Desktop\dir2 -Name
    $Compare = Compare-Object -ReferenceObject $dir1 -DifferenceObject $dir2 -ExcludeDifferent -IncludeEqual
    $compare | Select-Object -ExpandProperty InputObject
    

    在这种情况下,您只需要更改每个目录的路径即可。它应该只返回两个位置的文件夹名称。

    很抱歉介入,我知道这不是 PowerShell...只是偶然发现并想提供帮助。

    如果不允许请删除。

    【讨论】:

    • 您的答案需要稍作更改以反映所提出的问题。目前您正在输出所有子项名称,问题仅与目录有关,并且在技术上应该使用相同的路径,例如 $dir1 = Get-ChildItem -Path "$Env:SystemDrive\Folder1" -Directory -Name$dir2 = Get-ChildItem -Path "$Env:SystemDrive\Folder2" -Directory -Name
    • 不错,没有仔细阅读。好在有一个-Directory 参数。如果需要,我们也可以添加-Recurse。另外,看来他找到了答案!
    • 他们没有找到答案,因为在他们发布的内容中,第一个 for /f 循环也不仅仅隔离目录!此外,-Directory 选项需要 PowerShell 版本 3.0+,并且原始问题和代码没有明确说明需要递归操作。
    • 因此是“如果需要”。如果有人还在运行 v1 或 v2,我真的会感到惊讶。大多数用户至少使用 5.1,但也有一些人有理由说明为什么不使用。 Welp,似乎他们宁愿坚持批处理文件,所以我不会投入额外的 2 美分哈哈。不管怎样,周日好好休息吧!
    猜你喜欢
    • 2017-12-09
    • 1970-01-01
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多