@ECHO OFF
SETLOCAL
SET "sourcedir=C:\106x"
(
FOR /f "usebackqdelims=" %%a IN ("%sourcedir%\q25967146.txt") DO (
FOR /f "tokens=1*delims==" %%g IN ("%%a") DO (
IF /i "%%g"=="servername" (ECHO(%%g=%~1
) ELSE (ECHO(%%a)
)
)
)>newfile.txt
:: newfile.txt now contains a modified version.
:: This line will overwrite the original
ECHO(MOVE /y newfile.txt "%sourcedir%\q25967146.txt"
GOTO :EOF
Вам необходимо будет изменить настройку sourcedir
в соответствии с вашими обстоятельствами.
Я использовал файл с именем q25967146.txt
, содержащий ваши данные для моего тестирования. Измените имя, чтобы оно соответствовало самому себе.
Производит newfile.txt
Необходимые команды MOVE являются лишь ECHO
-е изд для целей тестирования. После того, как вы подтвердили правильность команд, измените значение ECHO(MOVE
на MOVE
, чтобы фактически переместить файлы. Append >nul
для подавления сообщений отчета (например, 1 file moved
)
Указанный выше метод преднамеренно создает новый файл, позволяющий просматривать новую версию без ущерба для оригинала.
Обратите внимание, что при создании новой версии эта версия удалит любые пустые строки из файла. При необходимости это можно преодолеть.
Чтобы запустить эту процедуру, используйте
thisbatchname «замещающий текст»
Если текст замены одной строки без пробелов и других разделителей (как кажется вероятным), то кавычки могут быть опущены.
код фиксированный - был delims=="
в for /f...%%a...
линии, это должно быть delims=
(один =
.) Двойной =
правильно в for /f ... %%g...
линии.
Чтобы заменить файл, активируйте команду move
в соответствии с инструкцией, заменив ECHO(MOVE
на MOVE
- после того, как вы подтвердите, что процедура работает правильно. Как вы видели, одна небольшая ошибка и ущерб могут быть сделаны - сохранены двухступенчатой операцией.
Это не дубликат http://stackoverflow.com/questions/60034/how-can-you-find-and-replace-text-in-a-file-using-the-windows-command-line -envir – ecthelion84