У меня есть пример.txt с ведьмой:

[DDRAWSINK]
PlaybackDisp=0
Fullscreen=0
CurUsage=2
PlaybackRes=0
ForceRender=0
DV Output On=0
DV Preview VGA=0
DV Port=0

отдельные строки могут иметь только 1 буквенно-цифровое значение, например

CurUsage может иметь только 2, или 3, или 0, или 9. Никогда 10 или -1 или 200

и то же самое для других элементов (PlaybackDisp, ForceRender, DV Output On и т. д.)

они могут иметь значение только от 0 до 9.

Я хотел бы изменить одно значение в пакетном файле, например, мне нужно присвоить Fullscreen значение "1" вместо 0.

Пакет должен распознать "Fullscreen" и изменить 0 ---> на 1

Является ли это возможным? Спасибо

1 ответ1

0

Был очень похожий вопрос здесь, и ответ может быть немного потеряется , чтобы получить эффект вы после:

@ECHO OFF
setlocal enableDelayedExpansion

FOR /F "tokens=1,* delims==" %%i IN (example.txt) DO (
    SET sdone=0
    SET "sname=%%i"
    SET "svalue=%%j"
    ECHO.Name:  !sname!
    ECHO.Value: !svalue!

    :: write out headers
    IF "!sdone!"=="0" IF "!sname:~0,1!"=="[" SET sdone=1&&ECHO.Type:  Header&&ECHO.!sname!>>new.ini

    :: write out the new value if it's "Fullscreen"
    IF "!sdone!"=="0" IF "!sname!"=="Fullscreen" IF "!svalue!"=="0" SET sdone=1&&ECHO.Type:  Rewrite&&ECHO.!sname!=1>>new.ini

    :: write out anything else
    IF "!sdone!"=="0" SET sdone=1&&ECHO.Type:  Content&&ECHO.!sname!=!svalue!>>new.ini

    :: a little padding to read the debug info
    ECHO.
)

Он читает входной файл (example.txt), затем анализирует содержимое для заголовков (обозначенных «[») и записывает их как есть. Флаги, которые не соответствуют "Полному экрану", будут записаны как есть в парах «имя = значение». Если имя строки полноэкранное, значение будет изменено на 1. Пустые строки будут пропущены.

Он записывает все изменения в новый файл «new.txt», который затем необходимо скопировать обратно в файл example.txt (в целях безопасности это не включено в приведенный выше код).

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