Это легко достижимая задача с использованием JREPL.BAT , написанного Дейвом Бенхамом , который представляет собой гибрид пакетного файла / JScript для выполнения замены регулярного выражения в файле с использованием JScript..
@echo off
if not exist "*.edmx" goto :EOF
if not exist "%~dp0jrepl.bat" goto :EOF
for %%I in (*.edmx) do call "%~dp0jrepl.bat" "[\t ]*Schema=\x22.*?\x22" "" /I /F "%%I" /O -
Пакетный файл сначала проверяет, существует ли какой-либо файл * .edmx в текущем каталоге, и сразу же завершает работу, если это условие не соответствует действительности, см. Куда возвращается GOTO: EOF?
Пакетный файл JREPL.BAT должен храниться в том же каталоге, что и пакетный файл с кодом выше.По этой причине пакетный файл проверяет следующее, действительно ли JREPL.BAT существует в каталоге пакетного файла, и завершается, если это условие не выполняется.
Команда FOR ищет в текущем каталоге не скрытые файлы, соответствующие шаблону подстановочного знака *.edmx
, и вызывает для каждого найденного EDMX-файла пакетный файл JREPL.BAT , чтобы без учета регистра заменить любое вхождение [\t ]*Schema=".*?"
пустой строкой дляудалите этот атрибут.
Значение строки поиска регулярного выражения:
[\t ]*
... найти символ горизонтальной табуляции или пробел 0 или более раз. Schema=
... найти эту строку без учета регистра из-за опции /I
. \x22
... найти символ двойной кавычки, указанный в значении его шестнадцатеричного кода из-за двойной кавычкив аргументах с двойными кавычками строка невозможна. .*?
... найти 0 или более символов без жадности, т. е. останавливаться на следующей "
, а не на последней "
в строке. \x22
... найти снова "
со ссылкой на его шестнадцатеричное значение кода.
Чтобы понять используемые команды и их работу, откройте окно командной строки, выполните там следующие команды и полностью прочитайтевсе страницы справки очень внимательно отображаются для каждой команды.
call /?
... объясняет также, что %~dp0
... диск и путь к аргументу 0 являются самим пакетным файлом. echo /?
for /?
goto /?
if /?
jrepl.bat /?