Batch file 批处理文件在整个文件中查找“文件”;T/C";并在每个”后键入480个字符;T/C";它遇到

Batch file 批处理文件在整个文件中查找“文件”;T/C";并在每个”后键入480个字符;T/C";它遇到,batch-file,command-line,Batch File,Command Line,我知道使用SQL Server可以很容易地做到这一点,但有趣的是,我的工作没有给我访问SQL Server的权限,所以我不知道除了通过批处理文件或者如果可能的话,如何才能做到这一点 我有一个来自生成的报告的平面文件,没有行分隔符,所以它只是一堆1024个字符的行。我的目标是找到每个出现的单词“T/C”,然后读取480个字符,然后循环直到到达文件末尾。我现在能想到的最好的办法是,我对批处理文件一无所知: for /f "tokens=*" %%a in (sample.txt) do (

我知道使用SQL Server可以很容易地做到这一点,但有趣的是,我的工作没有给我访问SQL Server的权限,所以我不知道除了通过批处理文件或者如果可能的话,如何才能做到这一点

我有一个来自生成的报告的平面文件,没有行分隔符,所以它只是一堆1024个字符的行。我的目标是找到每个出现的单词“T/C”,然后读取480个字符,然后循环直到到达文件末尾。我现在能想到的最好的办法是,我对批处理文件一无所知:

  for /f "tokens=*" %%a in (sample.txt) do (
  set line=%%a
  set chars=!line:~0,480!
  echo !chars! --- !line!
  )> text.txt 
批处理并不是实现这一点的理想工具,但上面的方法可能会奏效

基本上,它保留两行,
prevline
line

如果目标字符串不包含在前一行中,请将前一行的最后2个字符添加到当前行,并将结果用作前一行

否则,将两条线放在一起,并处理掉T/C前面的pasrt,然后剪掉尾部-为了便于测试,我将尾部限制为15个字符。然后使用前一行的当前行

使用最后2个字符的原因是,如果将
T/C
序列拆分为多行,则包括前一行中的
T
T/

这是我在
q19992107.txt中使用的测试文件

this is skipped
this contains T/C in line
no contents
skip this
this is irrelevant
split on / in T/
C was 1 split
this is irrelevant
split on / in T
/C was 2 split
there IS T/C
at the end of the previous line
and then there is T/C in the last
 in lineno cont
 was 1 splitthi
 was 2 splitthe
at the end of t
 in the last
结果显示在
newfile.txt

this is skipped
this contains T/C in line
no contents
skip this
this is irrelevant
split on / in T/
C was 1 split
this is irrelevant
split on / in T
/C was 2 split
there IS T/C
at the end of the previous line
and then there is T/C in the last
 in lineno cont
 was 1 splitthi
 was 2 splitthe
at the end of t
 in the last

是不是每行都有
T/C
,你想在同一行的
T/C
后面加480个字符?这是一个巨大的行,但由于记事本只能处理1024个/行,它被分成66行。谢谢你的回答,我试过了,但似乎不起作用。你能给我一些关于故障排除的建议吗?批处理确实生成了newfile.txt,但newfile.txt中没有任何内容。请删除重定向到
newfile.txt
以使输出可见。使用我上面提供的测试数据来减少线路长度。在最后的
GOTO:EOF
之前插入一个
PAUSE
命令,以在读取每一行后停止报告。注释掉首字母
@echo
,以在执行时接收每行的报告。你应该可以从那里追踪任何问题。