我有一个带有管道(|)分隔符的csv文件,如下所示。列标题由6列定义,但行值具有7列。
Column 1|Column 2|Column 3|Column 4|Column 5|Column 6
Value 1 |Value 2 |Value 3 |Value 4 |Value 5 |Value 6 |0
Value 11|Value 12|Value 13|Value 14|Value 15|Value 16|0
因此,我尝试使用Windows批处理脚本创建新列。
这是我的代码:
@Echo off&Setlocal EnableExtensions EnableDelayedExpansion
Set Row=0
( for /f "tokens=1-7 delims=|" %%A in (BAT0071.csv) do (
Set /A Row+=1
If !Row! lss 2 (Rem new header
echo %%A^|%%B^|%%C^|%%D^|%%E^|%%F^|IgnoreLast
) Else (Rem insert duplicate values
echo %%A^|%%B^|%%C^|%%D^|%%E^|%%F^|%%G
)
)
) >"BAT0071.tmp"
move /y "BAT0071.tmp" "BAT0071.csv"
PAUSE
问题是,如果所有行的值都被填充,那么它就好了,但是第一行中的示例值3为空,那么结构如下所示发生了变化。
Column 1|Column 2|Column 3|Column 4|Column 5|Column 6|IgnoreLast
Value 1 |Value 2 |Value 4 |Value 5 |Value 6 |0|
Value 11|Value 12|Value 13|Value 14|Value 15|Value 16|0
如何使空值保持不变?
预期结果
Column 1|Column 2|Column 3|Column 4|Column 5|Column 6|IgnoreLast
Value 1 |Value 2 |Value 3 |Value 4 |Value 5 |Value 6 |0
Value 11|Value 12|Value 13|Value 14|Value 15|Value 16|0
在这种情况下,由于您没有添加其他值,因此我们根本不使用delims
:
@Echo off&Setlocal EnableExtensions EnableDelayedExpansion
Set Row=0
(for /f "delims=" %%a in (BAT0071.csv) do (
Set /A Row+=1
If !Row! equ 1 (
echo %%a^|IgnoreLast
) else (
echo %%a
)
)
)>BAT0071.tmp
move /y "BAT0071.tmp" "BAT0071.csv"
PAUSE
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句