windows - 使用 Windows 批处理脚本在 CSV 文件中添加列
问题描述
我有一个带有管道 (|) 分隔符的 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
推荐阅读
- go - Go libstd.so with errors on Alpine
- jasper-reports - How to get sum of the XML repeated element values from a list in report?
- spring-boot - Jhipster 无法在登录前使用匿名用户
- swift - Backslash in string from standard input, no way to stripe it
- typoscript - TYPO3 Dynamic Localized Label in TypoScript
- javascript - 使用 jquery 根据“父”ID 选择“子”
- docker - 从码头看不到本地蚊子
- sql - I get syntax error when I want to reset primary key of sqlite table
- flutter - SliverAppBar without fading in the AppBar
- date - 如何将 Google Chart 网格线与我的数据点对齐?