DOS/Windows和Linux/Unix的文件換行回車格式不同,基於 DOS/Windows 的文本文件在每一行末尾有一個 CR(回車)和 LF(換行),而 UNIX 文本只有一個換行。
在這兩個操作系統下傳輸文件時需要進行格式轉換,Unix環境下的文件格式轉換工具有dos2unix命令,
Windows環境下可以用UltraEdit進行轉換。
也可以用一個批處理腳本實現
實現的想法來源於 csdn
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 一。 準備工作
:: 要先輸入命令 cmd /v:on 打開環境變量延遲。因爲默認情況下環境變量延遲是關閉的
@echo off
:: 轉換成中文代碼頁
chcp 936
::設置要轉換文件格式的”根“ 文件夾。也是日誌文件所在路徑
set /p route=請指定要轉換的單個文件的名字(包括路徑) 或者批量轉換 文件所在目錄 :
:: 抑制錯誤輸出
cd /d %route% 2>nul
if errorlevel 1 goto single
::得到”所輸入路徑下” 的 “所有目錄名”, 存放於 創建的臨時文件夾 ###temp
rd /s/q %route%/###temp
md %route%/###temp
for /r %%i in (.) do echo %%i >> %route%/###temp/ddd.txt
for /f "delims=." %%i in (%route%/###temp/ddd.txt) do echo %%i >> %route%/###temp/ddd2.txt
del %route%/###temp/ddd.txt
ren %route%/###temp/ddd2.txt ddd.txt
::::::::::::::::::::::::::::::::::::::::::
::取 各個目錄下的文件名, 不帶路徑。同時排除所有目錄名 dir /b /a-d
:: ”每一個目錄下“ 的 “所有文件名” 組成一個文本文件, 即 1.txt 2.txt...
set sequence=1001
for /f %%i in (%route%/###temp/ddd.txt) do (
dir /b /a-d %%i >> %route%/###temp/!sequence!.txt
set /a sequence+=1
)
echo 準備工作完成 !
echo.
echo 轉換開始。詳細情況請看日誌 %route%/###temp/unix2dos.log
echo 請稍等 ……
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: 二。 記錄日誌,轉換開始。
:: 思路:取 “每一個目錄” ---》
:: 取 “每一個目錄” 裏的 “每一個文件” ---》
:: 取 “每一個文件” 的 “每一行”
:: 即 三層 for 循環
echo %date% %time% >> %route%/###temp/unix2dos.log
echo Translation Begin Now ! >> %route%/###temp/unix2dos.log
:: 所有路徑名 所在文件 ddd.txt 中 每一行 對應一個 號, 即 sequence
set sequence=1001
for /f %%i in (%route%/###temp/ddd.txt) do (
cd /d %%i
for /f %%j in (%route%/###temp/!sequence!.txt) do (
for /f "tokens=1,2* delims=@" %%k in ('type %%j') do (
echo %%k >> ###%%j
)
:: ###%%j 乃是臨時所用文件名 *^__^*
del %%j
ren ###%%j %%j
echo %date% %time% File %%i%%j has been translated successfully >> %route%/###temp/unix2dos.log
)
set /a sequence+=1
echo. >> %route%/###temp/unix2dos.log
echo %date% %time% All the file in the Directory %%i have been translated successfully >> %route%/###temp/unix2dos.log
echo. >> %route%/###temp/unix2dos.log
echo. >> %route%/###temp/unix2dos.log
)
goto success
:single
if not exist %route% goto end
for /f "tokens=1,2* delims=@" %%i in ('type %route%') do echo %%i%%j >> %route%###
move /y %route%### %route%
:success
echo 轉換完成
:end
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::