我需要使用批处理文件(.bat)替换一个空白字符,该字符始终位于.txt文件中每行的固定位置(第13列),并带有另一个固定字符。 我可以使用什么样的功能?
我的档案示例:
1000588141025 00LEOTOURING SRL VIA FILADELFO CASTRO,1 LENTINI
我想:
1000588141025A00LEOTOURING SRL VIA FILADELFO CASTRO,1 LENTINI
答案 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.txt
和newfile2.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