我需要编写一个批处理文件,它将对扩展名为 .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
)
)
)