Это может быть немного не элегантно, но поместите это в свой пакетный файл:
setlocal enabledelayedexpansion
        ︙
for %%f in (*) do (
    set tempname=%%f
    set tempname=!tempname:xyz=!
    if %%f == !tempname! (put your sed command here) %%f
)
Команда setlocal может быть в начале пакетного файла или прямо перед циклом for или где-то между ними. 
(Я рекомендую поместить его в начало командного файла, сразу после @echo off .) 
Запустите cmd /? и setlocal /? немного больше информации об этой команде. 
По сути, это позволяет вам обрабатывать переменные в циклах несколько вменяемым образом.
Я предполагаю, что вы достаточно знаете о пакетных файлах, что вы понимаете, что FOR variable IN (set) DO command циклически перебирает имена файлов в set (который может включать в себя подстановочные знаки, такие как *), устанавливая variable для каждого имени файла и выполняя command. 
Скобки (после do и в конце) позволяют нам иметь многострочную command. 
Синтаксис обычной переменной не работает с %%variable s, поэтому мы копируем %%f во временную переменную. 
Затем мы используем форму расширения %variable:str1=str2% (find and replace), чтобы заменить все вхождения xyz в %tempname% .
            ... За исключением того, что мы находимся в цикле, мы должны использовать ! вместо % (это то место, куда входит setlocal enabledelayedexpansion). 
Затем мы сравниваем сокращенное имя файла с исходным именем (все еще в %%f). 
Если они равны, то в имени файла не должно быть ни одного экземпляра xyz , поэтому мы запускаем вашу команду. 
Если они разные, это означает, что подстановка нашла хотя бы один xyz , поэтому мы не запускаем вашу команду.
PS Я считаю, что вам не нужна команда call .