[英]Batch compare 2 directories and output names of folders from 2nd directory
我想比较 2 个不同目录中是否存在同名的子文件夹。 有时,相同的名称可能在源目录中拼写为小写,在目标目录中拼写为大写。 我想 output 来自目标目录的子文件夹的名称。
@echo off
FOR /F "delims=" %%a IN ('dir /b "%SystemDrive%\Folder1"') do (
IF exist "%SystemDrive%\Folder2\%%~a" (
echo %%a
)
)
exit
我怎样才能做到这一点?
@echo off
FOR /D %%a IN ("%SystemDrive%\Folder1\*"') do (
for %%b in ("%SystemDrive%\Folder2\%%~nxa") do echo %%~nxb
)
)
如果文件在folder2
中不存在,则for %%b
根本不会计算,因此您不需要if exist
。
在 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 ......只是偶然发现了这个并想提供帮助。
如果不允许请删除。
我找到了怎么做:
@echo off
FOR /F "delims=" %%a IN ('"dir /b %SystemDrive%\Folder1\*"') do (
for %%b in ("%SystemDrive%\Folder2\%%~a") do echo %%~nxb
)
)
感谢大家的帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.