在非重复文件上运行命令


0

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

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

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

2
好故事,问题是什么?:)到目前为止你有什么?你被困在哪里?
Ƭᴇcʜιᴇ00713年

@ techie007我尝试了这个,但我不知道如何排除文件名与找到.txe文件相同的文件。'@echo off forfiles / c“cmd / c if @ext == \”ext \“if if notext == \”txe \“echo @ fname.ext”pause'
Koboos 2013年

Answers:


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
        )
    )
)

起初看起来很复杂,但经过分析后对我来说很清楚。当然,它完美地完成了这项工作。谢谢@MarcksThomas
Koboos 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.