2013-12-11 56 views
2

我試圖從文本文件的行尾刪除額外的逗號。以下是我的方法:如何從批處理文件中的文本文件中的行中刪除額外的逗號?

set "n=%~," 
for %%t in (*.txt) do (
findstr /v /r /c:"$[%n%]*$" > res.txt 
) 

但它不能替代文本文件中的額外逗號。文本文件的內容如下:

abc,asd,123, 
1234,prq,456,,,,, 
jkl,abc,9876,,, 
5679,3459,gjh,, 

我想預期的輸出如下:

abc,asd,123 
123,prq,456 
jkl,abc,9878 
5679,3459,gjh 

回答

1

我想串會幫你把它做:

@echo off 
setlocal EnableDelayedExpansion 

for %%a in (*.txt) do (
    set txtPath=%%~fa 
    echo !txtPath! 
    for /f %%b in ('type "!txtPath!"') do (
     set line=%%b 
     set output=!line! 
     if "!line:~-1!"=="," (
      for /l %%i in (1,1,1000) do if "!output:~-1!"=="," set output=!output:~0,-1! 
     ) 
     echo !output!>> res.txt 
    ) 
) 

如圖所示在上面的代碼中,它將有助於修剪多達1,000個不需要的尾隨逗號,並將格式化後的輸出放到文本文件中。您可以參考此link獲取有關批處理字符串操作的更多信息。希望能幫助到你。

+0

感謝響應,我所要的輸出是文本文件 – Samraan

+0

@Samraan我已經更新了我的答案 – Dale

+0

我有更新我的問題和期望的輸出。我想清除自己,因爲我沒有提到文件名,但你已經提到文件名可以請你提供我的方法 – Samraan

2

這使用稱爲從repl.bat一個幫手批處理文件 - 在同一個文件夾中的批處理文件或者是道路上的一個文件夾中https://www.dropbox.com/s/qidqwztmetbvklt/repl.bat

廣場repl.bat

@echo off 
for %%t in (*.txt) do (
    type "%%t" |repl ",*$" "" >> res.tmp 
) 
ren res.tmp res.txt 
+0

可以請你解釋它是如何工作的 – Samraan

+0

repl是一個搜索和替換工具,它需要該文件,在行結束前刪除每個逗號。在正則表達式中'*'表示每個匹配'*'和'$'前的字符表示行結束。該匹配被替換爲空字符串'「」如果您需要更多信息,請詢問具體問題。 – foxidrive

+0

爲什麼您在該語句中使用了| rep1 – Samraan

相關問題