Windows
Linuxで作成したファイルの改行コードをWindows用の改行コードに置換する
ヤス
更新日:2021/08/05
改行コードや文字コードは鬼門です。
動作検証環境:Microsoft Windows 64bit [Version 6.1.7601]
改行コードが違うと処理がうまくいかない
Linux上で作成したファイルをFTP経由で取得し、バッチファイルで自動処理することがあるのですが、Linuxのファイルが改行されている場合、処理が正しく機能しないことがありました。
原因を調べると、Linuxの改行コードを正しく認識できないため問題が起こっていました。
Linux上で作成したファイルには必ず改行コードが入ってしまうため、VBスクリプトで改行コードを置換する方法を選択しました。
参考サイト
下記のサイトを参考にさせていただきました。
http://www.ilovex.co.jp/Division/ITD/archives/2008/10/vbscript.html
改行コードを置換するVBスクリプト
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
'変換するファイルの名前を設定(コマンドプロンプト上での動作を想定) '直接ファイルを指定する場合は、ファイル名を入力してください filename = WScript.Arguments(0) '新しく作成するファイルの名前(元ファイル名に_temp.txtを追加) '最後に名前を変換元の名称に変換するので何でも可 tmpfilename = filename & "_temp.txt" 'オブジェクトの作成 Set fileobj = CreateObject("Scripting.FileSystemObject") '変換するファイルを読み込みモードで開く Set file = fileobj.OpenTextFile(filename, 1) '作成するファイルを書き込み(上書き)モードで開く Set tmpfile = fileobj.OpenTextFile(tmpfilename, 2, True) 'ファイルの終わりに達するまでは繰り返す----------- do while not file.AtEndOfStream '変換元のファイルから一行読み込む buf = file.ReadLine '書き込む際に改行コードをつける tmpfile.Write buf & vbLf loop '--------------------------------------------- '各ファイルを閉じる file.Close tmpfile.Close '作成元のファイルを削除 fileobj.DeleteFile filename '新しく作成したファイルを作成元のファイルに移動 fileobj.MoveFile tmpfilename, filename |