对非重复文件运行命令

对非重复文件运行命令

我需要编写一个批处理文件,它将对扩展名为 .ext 的文件运行一个命令,但不包括具有相同文件名但两个不同扩展名(例如 .ext 和 .txe)的“重复”文件。

我尝试过这个,但是我不知道如何排除与找到的 .txe 文件具有相同文件名的文件:

@echo off 
forfiles /c "cmd /c if @ext==\"ext\" 
    if not @ext==\"txe\" 
     echo @fname.ext" 
pause 

答案1

下面的脚本将遍历当前目录,查找与模式匹配的文件*.ext。对于找到的每个文件,它将执行命令dir example.*(修饰符~n删除扩展名%%i)。此 dir 命令的输出通过管道传输到findstr以获取指示找到的文件数量的行。for /F解析此行并将数字存储在中%%j

如果发现具有不同扩展名的“重复”文件,则该数字将大于 1。如果数字为 1,则我们处理的是非重复文件,并且可以开始对 运行命令%%i。在此示例中,脚本仅使用 打印文件名echo %%i

@echo off
for %%i in (*.ext) do (
    for /F %%j in ('dir %%~ni.* ^| findstr /C:"File(s)"') do (
        if /I %%j EQU 1 (
            echo %%i
        )
    )
)

相关内容