Я в основном проверяю наличие пакетного файла подстановочным знаком * .reg, но я бы хотел, чтобы он выдавал ошибку, если существует более 1 файла .reg.

Это код, который я пытался использовать, но мой пакет довольно прост.

if "%%i" GTR 1 in (*.reg) == goto Error2
else do (regedit /s %%i)

Совершенно уверен, что у меня логика полностью задом наперед! Но я положил это здесь, чтобы вы имели приблизительное представление о том, что я пытаюсь сделать.

Спасибо!

2 ответа2

1

Из пакетного скрипта:

set "counter=0"
set "file="
for %%i in (*.reg) do (
    set /A "counter+=1"
    set "file=%%~i"
) 
if %counter% EQU 1 (
    regedit /s "%file%"
) else (
    goto :error
)

Подробнее читайте в индексе AZ командной строки Windows CMD

0

Если вы не хотите создавать дополнительные переменные, вот более простой метод:

@echo off
for /f %%c in ('dir /b *.reg 2^>NUL ^| find /c ".reg"') do if [%%c]==[1] (
    for %%f in (*.reg) do regedit /s "%%f"
) else (
    echo Error!
)

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