我有一个包含数百个条目的 CSV,并且正在尝试执行以下操作:
1. Get the first element (decimal number, ex: 1.01)
2. Remove the decimal part of the element (ex: 1)
3. Add the new number to the beginning of the file
输入示例:
"1.01","China Town Grocery","OE"
以下是我需要的输出:
"1","1.01","China Town Grocery","OE"
现在,我一直在命令行使用以下 for/do 命令:
for /f "tokens=*" %a in (input.txt) do (echo "input.txt[0]",%a) >> output.txt
我知道我需要更改我回显的内容。但我不知道如何获取该值。我遗漏了什么?提前致谢。
答案1
尽管您将其标记为狂欢,这实际上看起来像 Windows批处理文件。
您无法在一行中完成您想要的操作,因此您需要创建一个批处理文件。
这是我想到的批处理文件:
@ECHO off
SETLOCAL EnableDelayedExpansion
for /f "tokens=*" %%a in (input.txt) do (
CALL :GetNumber %%a
echo "!num!",%%a
) >> output.txt
:GetNumber
for /f "tokens=1 delims=." %%a in (%1) do (
set "num=%%a"
)
将此代码放入filename.bat
与文件相同的目录中并运行input.txt
。
这做了几件事:
答案2
如果可以选择 PowerShell:
Import-CSV "input.txt" -Header A,B,C | select-object New,A,B,C | ForEach-Object { $_.New = [math]::Floor($_.A); return $_ } | Export-CSV -Path output.txt -NoTypeInformation