2016-07-22 223 views
0

我有作为产生csv文件:batfile - 如何删除文件中的最后一行,空行?

"a","b","c","d" 
"a","b","c","d" 

但是在将它导入到一个应用程序读取三行中,我假定是通过在第二行的末尾回车符引起的。如果我在记事本中打开文件,curosr坐在第三个文件上,按回空格将光标返回到第2行的末尾,并保存文件按预期工作。

如何删除此回车/换行/将光标返回到第2行的结尾?

我想在batfile中完成此操作。我试过回显内容,然后使用type/findstr没有成功。

真的很感激它 - 我花了很多时间搜索,但没有成功到目前为止。 感谢

+0

相关问题:[Windows批处理:无新行回显](http://stackoverflow.com/q/7105433) – aschipfl

+0

如何使用它来编辑CSV文件?我尝试过回应和使用类型,没有任何运气。 csv文件是由外部进程生成的,我的batfile仅仅是复制文件,但也是这样做(快速地)删除最后一行上的回车符。 –

+0

请参阅下面的[我的答案](http://stackoverflow.com/a/38527900)... – aschipfl

回答

1

的技巧是使用set /P而不是echo,因为它不会产生拖尾断行,并将其添加显式,但使用echo/最后一行:

@echo off 
setlocal EnableExtensions DisableDelayedExpansion 

set "FLAG=" 
> "\path\to\returnfile.csv" (
    for /F "usebackq delims=" %%L in ("\path\to\yourfile.csv") do (
     if defined FLAG echo/ 
     < nul set /P ="%%L" 
     set "FLAG=#" 
    ) 
) 

endlocal 
exit /B 

又见这个职位set /P方法:Windows batch: echo without new line

+0

是的,这是诀窍 - 我很感激。 –

+0

嗨,我刚刚注意到它也消除了领先的“从每一行,你能解释为什么? –

+0

我认为这可以通过一个小的改变来修复:而不是'set/P”= %% L“'写'set/P =“%% L”'(现在无法测试) – aschipfl