使用批处理脚本,在文本文件中每行的特定列处写入文本

时间:2017-02-16 07:01:03

标签: batch-file cmd

假设我想写一个文字" Check"使用批处理脚本在2000位置(列)和文本文件的每一行。

即使文件包含以偏移量100或小于2000结束的行。

根据我的说法,算法可能是......

  1. for循环一直持续到从第1个位置开始的行结束

  2. 内部for循环遍历col编号(偏移量)而不对原始文件执行任何操作,或者如果没有文本添加空格以达到该偏移量

  3. 如果达到偏移量,只需添加文字...并继续下一行。

  4. 我希望我已经解决了我的问题。请帮我写。 谢谢 Samrat Garai

1 个答案:

答案 0 :(得分:1)

@echo off
setlocal enabledelayedexpansion
REM build a 2000-space-char-string: 
for /l %%a in (1,1,2000) do set "spc=!spc! "
REM process every line [use a little trick to process empty lines also]
for /f "tokens=1,* delims=]" %%a in ('find /n /v "" test.txt') do (
  REM append the long string to the line...
  set line=%%b!%spc%
  REM ... and cut to 2000 chars, appending "Check":
  echo(!line:~0,2000!Check
)

更快的方法来构建一个2047字符串(额外的47个字符在这里没有坏处):

for /l %%a in (1,1,10) do set "spc=!spc! !spc!" 
""小技巧"处理空行:find /n添加行号(如[15]this is line no 15),因此该行不再为空。 *之后的第二个标记(] ="其余部分")是原始行。