2016-07-22 240 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