ソースコードにときどき混じるCRを削る

自分用の覚書。Visual Studio 2010 Shell で fortran のLF改行のソースコードを編集していたら、ときどきCRがまざってしまい、環境によっては fortran コンパイラがエラーを吐くので、WindowsドラッグアンドドロップでCRを削除するBATファイルとPHPスクリプトのセットを書いた。PHPスクリプト部分

<?php
if ( $argc > 1 ) {
  $fname=$argv[1];
  $handle= fopen("{$fname}.tmp",'r');
  if ( $handle ) {
    $out="";
    while ( !feof($handle) ) {
      $c= fgetc($handle);
      if ( $c != "\r" ) {
        $out.=$c;
      }
    }
    fclose($handle);
    file_put_contents($fname,$out);
  }
}

BATファイル部分。BATファイルのアイコンにドラッグアンドドロップをすると、カレントディレクトリがドキュメントルート、引数 %1 にはフルパスのファイル名が入ってしまうので、ディレクトリ変更に%1を使い、ファイル名には %~nx1 を使う。

pushd %1\..
del %~nx1.tmp
rename %~nx1 %~nx1.tmp
php %~p0removeCR.php %~nx1