2014-01-08 36 views
0

我有一个自动创建的包含多列的CSV文件。其中一列被称为“sn”。我需要确保sn永远不是CSV文件中的第一列。不幸的是我无法编辑创建程序的程序。批量移动CSV文件中的列

因此,在一个批处理文件,我想:

  • 开放CSV
  • 检查其中的sn列是
  • 如果它是在第1列,然后将其移动到另一列(列2是精)
  • 保存更改

这是可能在批处理文件?

谢谢。

+0

什么操作系统,什么编程语言,任何约束?你尝试了什么? – Andy

+0

明天你会要求使用批处理文件编写数据库服务器。为什么不使用任何真正的编程语言来做到这一点? – smnbbrv

+0

你的问题的答案是“是的,这是可能的”。但相当费力。使用红宝石和csv模块,这是微不足道的。只需谷歌“红宝石csv教程”,你可以在30分钟内为这个任务写一个脚本。 – Draugr

回答

0
@ECHO OFF 
SETLOCAL 
(
SET "choosing=" 
SET "movecol=" 
FOR /f "tokens=1*delims=," %%a IN (q20995223.txt) DO (
    IF NOT DEFINED choosing (
    IF "%%a"=="sn" SET movecol=Y 
    SET choosing=N 
) 
    IF DEFINED movecol (ECHO(%%b,%%a) ELSE (ECHO(%%a,%%b) 
) 
)>newfile.txt 

GOTO :EOF 

如果在第一行的第一列包含sn,则剩余的列向左移动一个和sn列移动到最后。否则,该文件仅转载至newfile.txt

q20995223.txt是我的测试文件。将它们重命名为适合您的任务。

+0

太棒了。谢谢! – user2145047