ufooo, проблема здесь не в том, что с использованием "чистого" пакетного файла нельзя удалить какой-либо символ, а в том, что нельзя удалить именно символ "*". Также нельзя ещё удалить символы "=" и "~".
Остальные символы (включая даже двойную кавычку) можно удалять с помощью такого кода (на примере амперсанда):
Код:
@echo off
setlocal
set "file=Test.txt"
set "char=&"
for /f %%i in ('
^<"%file%" find/c /v ""
') do <"%file%">.tmp (
for /l %%i in (1 1 %%i) do (
set x=& set/p x=& if defined x (
cmd/v/c echo.!x:^^^%char%^^=!
) else (
echo.
)
)
)
>nul move .tmp "%file%"
endlocal
exit/b 0
.
N.B.! Если надо удалить символ процента, то писать надо так:
.
А вот с помощью кода
PowerShell можно удалить любой символ. Вот этот код, вставленный в код обычного пакетного файла (уже на примере "Вашей" звёздочки):
Код:
@powershell "sc ($x='Test.txt') ((gc $x)-replace """\*""")"
.
N.B.! С учётом особенностей применения кода
PowerShell в коде пакетного файла символ процента также нужно удваивать, а символ двойной кавычки -- утраивать.