Windowsコマンドプロンプトにて、renameコマンドを使いファイルの一括名前変更を行いたいと思っています。
そこでphpを使い、
<?php
/* ファイルポインタをオープン */
$new = fopen("li.txt", "r");
$old = fopen("moto.txt", "r");
/* ファイルを1行ずつ出力 */
if($new){
while ($nline = fgets($new)) {
$oline = fgets($old);
$results = shell_exec("rename '".$oline."' '".$nline."'");
echo $results;
}
}
/* ファイルポインタをクローズ */
fclose($new);
fclose($old);
このようにして変更前後の名前のファイルを別で用意しそれぞれを読み込み
変更しようとしているのですが、コマンドプロンプトでは構文エラーとなります。
そこで試しに("rename '".$oline."' '".$nline."'")部分だけをエコーで出力してみたところ
$olineと$nlineの間に改行のようなものが入っていることがわかりました。
しかしその原因がわかりません。
どなたか解決できる方はいらっしゃらないでしょうか?
よろしくお願いします。
PHPでfgets()を使って一行ずつ呼び出すときには,取得した文字列の最後に改行コードが付加されている.改行を削除する場合にはrtrim()を使うとよい.
あくまでコピペですから [覚書][PHP]fgets()したときの改行コード
ですって。
PHP: rtrim - Manual
なるほど!なるほど!ありがとうございます!
2014/10/11 16:24:07URLもとても参考になりました!ありがとうございました^^