批处理修改文件,如何写啊,大侠们??

X8724.91R149.50T7.50I1
G00X8724.91Y0W0B27.00
M07
G06X8499.31A0W352.98B-28.00
G06X8504.98A0W353.98B29.00
G06X8510.64A0W354.98B16.00
G06X8519.58A0W356.56B14.00
G06X8526.80A0W357.56B13.00
G06X8534.02A0W358.56B25.00
G06X8544.44A0W360.00B25.00
M08(以这个M08为分界点,在这个M08前面出现的B*.??一律改为B45.00,后面出现的B*.??一律改为-B45.00,而且是针对一个文件夹中多个这样的gcd文件进行批处理,请问如何实现??
G00X671.06Y0W0B-25.00
M07
G06X671.06A0W0.00B36.00
G06X691.41A0W1.26B78.00
G06X711.66A0W2.48B-25.00
G06X728.38A0W3.48B-35.00
G06X752.41A0W4.92B-25.00
G06X772.91A0W6.13B-15.00
G06X790.02A0W7.13B-25.00
G06X814.08A0W8.54B-25.00
G06X834.77A0W9.73B-25.00
G06X852.11A0W10.73B-25.00
M08
M02
---------------------------------(下面为替换之后的效果)
X8724.91R149.50T7.50I1
G00X8724.91Y0W0B45.00
M07
G06X8499.31A0W352.98B45.00
G06X8504.98A0W353.98B45.00
G06X8510.64A0W354.98B45.00
G06X8519.58A0W356.56B45.00
G06X8526.80A0W357.56B45.00
G06X8534.02A0W358.56B45.00
G06X8544.44A0W360.00B45.00
M08
G00X671.06Y0W0B-45.00
M07
G06X671.06A0W0.00B-45.00
G06X691.41A0W1.26B-45.00
G06X711.66A0W2.48B-45.00
G06X728.38A0W3.48B-45.00
G06X752.41A0W4.92B-45.00
G06X772.91A0W6.13B-45.00
G06X790.02A0W7.13B-45.00
G06X814.08A0W8.54B-45.00
G06X834.77A0W9.73B-45.00
G06X852.11A0W10.73B-45.00
M08
M02

边界条件判定我不写了
保存成bat之后不要直接双击运行,把所有要处理的文件拖到批处理上(可以一次拖多个)
然后会在批处理所在目录下产生对应的文件

比如原来的文件叫abc.gcd,产生的文件就叫abc_replaced.gcd

另外,文件名有空格会出错,文件中含有敏感字符><|!%等会出错,文件中含有其他B字符会出错,文件中含有超过一个的M08只认第一个...

@echo off
setlocal enabledelayedexpansion
cd /d %~dp0
:loop
cd.>%~n1_replaced%~x1
set str=45.00
for /f "delims=B tokens=1,2" %%a in (%1) do (
if "%%a"=="M08" (
set str=-45.00
)
call:replace "%%a" "%%b" "!str!" "%~n1_replaced%~x1"
)
if not "%2"=="" (
shift
goto:loop
)

exit /b

:replace
if "%~1"=="" (
echo.>>%~4
exit /b
)
if "%~2"=="" (
echo %~1>>%~4
exit /b
)
echo %~1B%~3>>%~4
exit /b
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答
大家正在搜