1

これは私の myfile.txt です。サンプルを参照して、2 番目の列にスペースを追加したい

ARK,LAR    SNE,QNE,898,ILO,SNE,SNE,LAR,LAR,545
AUS,MNY    P08,TTL,7776,STO,STL,STL,MNY,MNY,567
BOS,MTZ    TNK,SDK,444,PPO,TNK,TNK,MTZ,MTZ,456

これは私が使用しているコードです

for /f  "tokens=* " %%i in (myfile.txt) do call :echo2 %%i %%J %%K %%L %%M %%N %%O %%P %%Q %%R %%S
goto :EOF
:echo2
echo insert ('%1','%2','%3','%4','%5','%6','%7','%8','%9','%10'); >>myfile1.txt
goto :EOF

その表示結果、スペースを取る必要があった場所で、私が見逃しているものを助けていただければ幸いです

4

4 に答える 4

1
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
(
FOR /f "delims=" %%i IN (myfile.txt) DO (
 SET "dataline=%%i"
 SET "outline="
 CALL :adddata
)
)>myfile1.txt
GOTO :EOF

:adddata
FOR /f "tokens=1*delims=," %%p IN ("%dataline%"
    ) DO SET outline=%outline%'%%p',&SET "dataline=%%q"
IF DEFINED dataline GOTO adddata
ECHO insert (%outline:~0,-1%);
GOTO :eof

もちろん、コンマが確実に列の終わりの区切り文字である場合、これは列に実質的な制限なしで仕事をするはずです。

  • ソース ファイルの各行に対して、行全体を割り当てて datalineクリアします。outline
  • 次に、カンマで区切られた最初のトークンを から取得し、datalineそれを引用し、カンマを追加して に追加しoutlineます。次にdataline、最初のコンマの後の行の残りの部分に設定します。
  • 何もなくなるまで繰り返すdataline
  • テキストを出力insert (+ の最後の文字を除くすべてoutline(コンマになります) +);
于 2013-05-01T03:38:09.643 に答える