批处理文件,用于在文件txt中的精确位置插入字符串

时间:2017-11-08 09:42:27

标签: windows batch-file

我有一个test.txt这样的文件:

sylvester, stallone, 35,20, florida;
brad, pitt, 40,25, california;
sean, connery, 15,80, london;

我必须创建一个新的姓氏,其中姓氏以15列开头,名称在30

我想用批处理文件来完成。

我设法做到的是:

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "tokens=1,2 delims=," %%G IN (test.txt) DO (
SET "line=%%H"
SET "spaces=         "        
ECHO (!spaces!!line!!spaces!%%G
)
) >> output.txt
pause

但是这样%%G并不总是从同一个位置开始,而是取决于有多少个字符%%H。而且,不会在output.txt上写,但它会让我在批处理窗口中看到结果。 我知道这可能是一个微不足道的问题,但我是编程新手。

1 个答案:

答案 0 :(得分:0)

@echo off
setlocal enabledelayedexpansion
del output.txt
set "spaces=              " :: 15 spaces
(FOR /F "tokens=1,2 delims=, " %%G IN (test.txt) DO (
  SET "line=%spaces%%%H %spaces%"
  set "line=!line:~0,29!"
  echo !line:~0,29!%%G
)) >output.txt

在姓氏前添加14个空格(以确保名称从15开始)并追加另外15个空格(以获得至少29的累积长度)。然后将其修剪为前29个字符并附加名称(在Pos 30处) (为delims添加了一个空间以便正确处理)