Мне нужно написать командный файл, который будет запускать команду для файлов с расширением .ext, исключая "дублированные" файлы, которые имеют одинаковое имя файла, но два разных расширения (например, .ext и .txe).

Я пробовал это, но я не знаю, как исключить файл с тем же именем файла, что и найденный файл .txe:

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

1 ответ1

1

Сценарий ниже будет проходить по текущему каталогу в поисках файлов, соответствующих шаблону *.ext . Для каждого найденного файла он выполнит команду dir example.* (Модификатор ~n удаляет расширение %%i). Выходные данные этой команды dir передаются в findstr для получения строки, указывающей количество найденных файлов. for /F анализирует эту строку и сохраняет число в %%j .

Если будут найдены «дубликаты» файлов с другим расширением, это число будет больше единицы. Если число равно единице, мы имеем дело с неповторяющимися и можем запускать команды на %%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
        )
    )
)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .