假设文件asimplefile.txt包含
嗨,祝你有愉快的一天
如何用0(或任何字符)替换所有内容。该文件应该看起来像“
000000000000000000
使用批处理命令 或直接使用Windows命令行
答案 0 :(得分:3)
使用REPL.BAT - a hybrid JScript/batch utility非常简单,它在stdin上执行正则表达式搜索/替换,并将结果写入stdout。 REPL.BAT是纯脚本,可以在任何现代Windows机器上从XP开始本地运行。
type asimplefile.txt | repl . 0 >asimplefile.txt.new
move /y asimplefile.txt.new asimplefile.txt >nul
答案 1 :(得分:1)
将第三行替换为文件的路径。请记住,包含!
的字符串将失败,FOR /F
不处理为空或仅使用分隔符行填充。不确定是否要也替换新的线?
@echo off
setlocal
set "file_tp=c:\some_file.txt"
break>"%tmp%\zeroes"
for /f "delims=" %%a in ('findstr /n /r "^" "%file_tp%" ') do (
setlocal enableDelayedExpansion
set "zero_string="
set "line=%%a"
set "line=!line:~2!"
call :strlen0.3 line len
for /l %%# in (1,1,!len!) do (
set "zero_ztring=!zero_ztring!0"
)
echo !zero_ztring!>>"%tmp%\zeroes"
endlocal
)
type "%tmp%\zeroes">"%file_tp%"
del /q /f "%tmp%\zeroes"
endlocal
goto :eof
:strlen0.3 StrVar [RtnVar]
setlocal EnableDelayedExpansion
set "s=#!%~1!"
set "len=0"
for %%A in ( 6561 2187 729 243 81 27 9 3 1) do (
set /A mod=2*%%A
for %%Z in (!mod!) do (
if !mod! GTR 8190 (
set mod=8190
)
if "!s:~%%Z,1!" neq "" (
set /a "len+=%%Z"
set "s=!s:~%%Z!"
) else (
if "!s:~%%A,1!" neq "" (
set /a "len+=%%A"
set "s=!s:~%%A!"
)
)
)
)
endlocal & if "%~2" neq "" (set %~2=%len%) else echo **%len%**
exit /b