@ECHO Off
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"
SET "filename1=%sourcedir%\q35828741.txt"
SET "outfile=%destdir%\outfile.txt"
FOR /L %%f IN (1,1,3) DO SET "field%%f="
(
FOR /f "usebackqdelims=" %%a IN ("%filename1%") DO (
FOR %%b IN (%%a) DO CALL :process %%b
)
)>"%outfile%"
GOTO :EOF
:process
IF NOT DEFINED field1 SET "field1=%~1"&GOTO :EOF
IF NOT DEFINED field2 SET "field2=%~1"&GOTO :EOF
SET "field3=%~1"
:repcwp
FOR /f "tokens=1*delims=:" %%f IN ("%field3%") DO (
SET "field3=%%g"
IF DEFINED field3 (SET "field3=%%f''%%g"&GOTO repcwp) ELSE (SET "field3=%%~f")
)
set "field1=%field1:;=|%"
set "field1=%field1:"='%"
set "field2=%field2:;=|%"
set "field2=%field2:"='%"
set "field3=%field3:;=|%"
set "field3=%field3:"='%"
ECHO "%field1:''=:%";"%field2:''=:%";"%field3:''=:%"
FOR /L %%f IN (1,1,3) DO SET "field%%f="
GOTO :eof
您需要更改sourcedir
和destdir
的設置以適合您的情況。
我使用了一個名爲q35828741.txt
的文件,其中包含我的測試數據。
可生產定義爲%OUTFILE%
進程中的文件的每一行的文件,假定它是良好的構造。
使用簡單的for
循環將三個字段傳遞給過程:過程。線各自的形式是「DATA1」 隔板「DATA2」 隔板「DATA3」
在:process
,數據累積到field1..3
由於共同子串替換機制使用:
以分離「to」和「from」字符串,用不同的字符串''
替換每個:
。這隻適用於field3
,因爲它從樣本數據中可以看出它是唯一可能包含冒號的字段。如果冒號可能出現在其他領域,這只是跟隨彈跳球的問題。
更換所有冒號後,根據需要替換分號和兔耳,然後在輸出數據到目標文件的echo
中,用冒號替換''
。
這產生了一些假設,包括數據不包含%
或其他尷尬的字符,並且數據中沒有::
的實例。
這不是一個問題,而是一個任務請求;請分享您迄今爲止所嘗試的內容;請記住,SO不是免費的寫作服務...... – aschipfl