以下循环/函数应该用于编辑文件(只需替换文件中的第二行)。原始文件包含一个大于165000的符号长行,执行此循环后,新文件中仅此行消失了。
setlocal EnableDelayedExpansion
set /a count=0
>"%~3" (
for /f "usebackq delims=" %%A in ("%~2") do (
if !count!==1 (echo ^<html^>) else (
setlocal DisableDelayedExpansion
echo.%%A
endlocal)
set /a count+=1
)
)
endlocal
goto:eof
我认为这与变量(%% A)可以存储的最大长度有关。是否可以避免此行为?
提前致谢!
本地批处理不能用于长度超过〜8191字节的行,除非您采取极端措施一次读取一个字节(它涉及创建长度> = source的虚拟文件,并使用FC来导出字节)。这是为什么我很少使用批处理来修改文件的众多原因之一。
我将使用我的JREPL.BAT实用程序:
call jrepl "^.*" "<html>" /jbegln "skip=(ln!=2)" /f "%~2" /o "%~3"
但是还有许多其他选择。
您可以使用通过CSCRIPT执行的JScript或VBS编写自定义代码。或者,您可以使用PowerShell。
或者您可以获得Windows的sed或awk或...
更新-可能的纯批处理解决方案
如果满足以下所有条件,则以下内容可能会起作用:
@echo off
setlocal enableDelayedExpansion
>"%~3" (
set "ln="
<"%~2" set /p "ln="
echo(!ln!
echo ^<html^>
more +2 "%~2"
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句