在BAT中如何做 Ascii 文本的變換 更換換行符號 (Linux -> Win)
反過來 dos2Unix 請參考這篇
CHG: 在BAT中如何做 Ascii 文本的變換 更換換行符號 (Win -> Linux)
Bat能做的事情非常有限,這邊最有效率的辦法是直接呼叫老大哥 PowerShell 來直接擺平這事情。
廢話不多說直接上代碼一行而已
@echo off& Title EOLConverter By Charlotte
echo D:\UnixTextFile.txt | powershell -nop "[string]$fle=$input; if(-not(Test-Path $fle)){Write-Error 'Path is not exist' -ea 1}; $tmp=$fle+'.tmp'; $enc=[Text.Encoding]::Default; $red=New-Object IO.StreamReader($fle,$enc); $wrt=New-Object IO.StreamWriter($tmp,$false,$enc); while(-not $red.EndOfStream){$wrt.WriteLine($red.ReadLine())}; $red.Close();$wrt.Close(); mv $tmp $fle -fo -ea 1"
exit /b %errorlevel%
力求簡約一行直接幹掉,相當於引用一個外部二禁制檔案的概念,內容就不用太糾結了有興趣自己拆行出來看馬上能懂得
不過功能簡單只有針對系統語言編碼做轉換,非系統語言編碼或是涉及到兩種編碼轉換的,自行修改內容吧
內容做的是從Linux轉換到Windwos反過來的自行看著代碼推敲吧