1

这是我的 myfile.txt 我想在第二列中添加空格,参见示例

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 回答
0

如果我理解正确,您想保留文本中第一个和第二个逗号之间的空格?尝试这个:

@echo off

for /f "tokens=1-10 delims=," %%a in (myfile.txt) do (
  >>myfile1.txt echo.insert ('%%a','%%b','%%c','%%d','%%e','%%f','%%g','%%h','%%i','%%j'^);
)
于 2013-04-30T21:51:41.610 回答
0

尝试这个:

@echo off & setlocal
(for /f  "delims=" %%i in (myfile.txt) do (
    set "line='%%i'"
    setlocal enabledelayedexpansion
    set "line=!line:,=','!"
    set "line=!line:    =    ','!"
    echo(insert (!line!^);
    endlocal
))>myfile1.txt
于 2013-05-01T00:24:39.770 回答
0

您不能超过 9 个变量,因此您的脚本在第 9 个之后将无法工作。您可以使用 for /f 将每一行完全复制为原始文件,如下所示:

for /f  "tokens=* " %%i in (myfile.txt) do echo %%i >>myfile1.txt
goto :EOF
于 2013-05-01T08:24:38.433 回答