从文本文件中删除空格并在特定文本后添加字符

时间:2014-04-17 14:24:09

标签: batch-file

我有一个文本文件,我需要在字符后添加'1'并删除前两列之间的任何空格。我试图使用以下查询,但收到此错误

201N001466  AD55JGU0604140     VOLKSWAGEN          GOLF S                   BLACK        
201N001437  AF14HFY0604140     BMW                 520D SE AUTO             GREY  
201N001298  AF51NSN0604140     SKODA               FABIA COMFORT 8V

这是我希望在N之后添加'1'的格式,并删除前2列之间的任何空格。

201N1001466AD55JGU0604140     VOLKSWAGEN          GOLF S                   BLACK         
201N1001437AF14HFY0604140     BMW                 520D SE AUTO             GREY               
201N1001298AF51NSN0604140     SKODA               FABIA COMFORT 8V     

这是我的查询

@echo off
  if [%1]==[] then echo File name missing & goto :EOF
  (for /f "tokens=1" %%a in (%1) do echo %%a) > %~n1_out.txt

3 个答案:

答案 0 :(得分:1)

这是一种强有力的方法。

这使用名为repl.bat的帮助程序批处理文件 - 从https://www.dropbox.com/s/qidqwztmetbvklt/repl.bat

下载

repl.bat放在与批处理文件相同的文件夹中或放在路径上的文件夹中。

@echo off
type "file.txt" | repl "(.*?N)(.*?) {1,}(.*)" "$11$2$3" >"newfile.txt"

答案 1 :(得分:1)

@echo off
setlocal enabledelayedexpansion
for /f "tokens=1,2,*" %%a in (infile.txt) do (
  set a=%%a
  echo !a:~0,4!1!a:~4!%%b %%c
) >>outfile.txt

说明:

201N001466 AD55JGU0604140 VOLKSWAGEN GOLF S BLACK token 1 token 2 token 3 ( token * ).........................

echo !a:~0,4!1!a:~4!%%b %%c !a:~0,4! first 4 chars from token 1 1 the inserted "1" !a:~4! Chars 5 to end of token 1 (counting starts at zero) %%b token 2 %%c token * (Rest of the line)

答案 2 :(得分:0)

我将采用的方法是为与空间对应的数字制作7个变量(使用你对其他strings(具有不同名称)的所有内容),如:

set num1=201N
set num2=001466
set num3=001437
set num4=001298
set num5=AD55JGU0604140
set num6=AF14HFY0604140
set num7=AF51NSN0604140

当你用空格回应它(如果你回应它)时你会这样做(第一行):

echo %num1%%num2%  %num5%  Golf S Black

当你去添加' 1'在一行中再添加一个变量并添加该行(为每一行创建一个单独的变量)

set num8=%num1%1%num2%%num5% Golf S Black

就这样做是为了另外两行。

希望有所帮助,谢谢!