2012-07-19 74 views
0

使用批處理文件我需要在現有文本文件的每一行中插入字符。將結果寫入將用於填充數據庫的新文本文件。插入的字符將成爲分隔符,以正確的順序排列數據。將字符插入文本文件的每一行

樣品:
,因爲它存在 文件今天:

AAAAAAAAA~ZZZ 
AAAAAAAAA~BB~ZZZ 
AAAAAAAAA~BB~CCCC~ZZZ 
AAAAAAAAA~BBB~CC~ZZZ 

期望的結果:分隔符後

AAAAAAAAA~~~~ZZZ 
AAAAAAAAA~BB~~~ZZZ 
AAAAAAAAA~BB~CCCC~~ZZZ 
AAAAAAAAA~BBB~CC~~ZZZ 

外觀被觸發:

Part Num Rev Stat Type   
AAAAAAAAA     ZZZ 
AAAAAAAAA BB   ZZZ 
AAAAAAAAA BB  CC  ZZZ 
AAAAAAAAA BBB CC  ZZZ 

注:
冷杉ST域始終是9個字符
最後一個字段總是3個字符
我用波浪線作爲字段分隔符

+0

我不知道我理解的邏輯分隔符許多需要如何插入。 – Joey 2012-07-19 17:50:53

+0

是否可以在任何行中以「AAAAAAAAA〜CC〜ZZZ」或「AAAAAAAAA〜CCCC〜ZZZ」的格式存儲記錄? (即沒有修訂版) – LittleBobbyTables 2012-07-19 17:51:43

+0

爲什麼需要將最後一行添加到行中,這還不是很清楚。根據您的示例數據的表格形式,有四個字段,但分隔線表明有五個字段。無論哪種方式,假定:1)第一場和最後一場總是存在,2)最大場數是固定的,以及3)如果場數少於最大場數,則不存在(或*空*)那些總是那些在最後一場之前? – 2012-07-19 18:59:09

回答

0

這應該這樣做。
用法:mapper {sourfile} {targetfile}

mapper.cmd

@echo off 
setlocal enabledelayedexpansion 
if "%~1" == "" (
    echo No source file specified. 
    goto :eof 
) 
if not exist "%~1" (
    echo Source file not found. 
    goto :eof 
) 
if "%~2" == "" (
    echo No target file specified. 
    goto :eof 
) 
if exist "%~2" (
    echo Target file is already exist. 
    goto :eof 
) 
rem>"%~2" 
for /f "tokens=1,2,3,4,5 delims=~" %%a in (%~1) do (
    if "%%b" == "" (
    echo %%a~~~~>>"%~2" 
) else (
    if "%%c" == "" (
     echo %%a~~~~%%b>>"%~2" 
    ) else (
     if "%%d" == "" (
     echo %%a~%%b~~~%%c>>"%~2" 
    ) else (
     if "%%e" == "" (
      echo %%a~%%b~%%c~~%%d>>"%~2" 
     ) else (
      echo %%a~%%b~%%c~%%d~%%e>>"%~2" 
     ) 
    ) 
    ) 
) 
) 
相關問題