批量插入/替换在固定位置的文本文件中

时间:2014-11-04 10:43:00

标签: windows batch-file text replace

我需要使用批处理文件(.bat)替换一个空白字符,该字符始终位于.txt文件中每行的固定位置(第13列),并带有另一个固定字符。 我可以使用什么样的功能?

我的档案示例:

1000588141025 00LEOTOURING SRL   VIA FILADELFO CASTRO,1         LENTINI 

我想:

1000588141025A00LEOTOURING SRL   VIA FILADELFO CASTRO,1         LENTINI 

2 个答案:

答案 0 :(得分:0)

@ECHO OFF
:: version 1 - "replace regardless"
SETLOCAL ENABLEDELAYEDEXPANSION
(
 FOR /f "delims=" %%a IN (q26733113.txt) DO (
  SET "line=%%a"
  ECHO(!line:~0,13!A!line:~14!
 )
)>newfile.txt

:: version2 - "replace only if space found in position"
SETLOCAL ENABLEDELAYEDEXPANSION
(
 FOR /f "delims=" %%a IN (q26733113.txt) DO (
  SET "line=%%a"
  IF "!line:~13,1!"==" " (ECHO(!line:~0,13!A!line:~14!) ELSE (ECHO(%%a)
 )
)>newfile2.txt

GOTO :EOF

我使用了一个名为q26733113.txt的文件,其中包含我的测试数据。 生成newfile.txtnewfile2.txt - 第一个更改列 - 正常计数中的14个,如测试数据中所示 - 无论第14列的内容如何。第二个仅用{{1替换第14列如果它是一个空格,否则保持原样。

不要担心看似不平衡的括号。 A具有特殊属性 - te括号不计算...

答案 1 :(得分:0)

使用REPL.BAT

type "file.txt"|repl "^(.{12}) " "$1A" >"file.txt.new"
move /y "file.txt.new" "file.txt" >nul