• ベストアンサー

batファイルでrenameができません。

Windowsのbatファイルでrenameをするにはどうすればよいでしょうか? カレントディレクトリ └ A というディレクトリ構造があって、Aの中には「a.txt」があるとします。 カレントディレクトリから、 「rename "./a/A.txt" B.txt」 と書いてあるbatファイルを起動しても、「a.txt」の名前が変更されません。 「指定したパスが見つかりません。」と出てきてしまいます。 ダブルクォーテーションを取ったりつけたり、絶対パス、相対パスを書いたりと いろいろ試しましたがだめでした。 何か方法はないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.4

No1です。 すいません。A と a の違いに目が行ってしまってました。 >たとえばdirコマンドなどは「/」でも通ります。 通りません。/ はオプションの指定と解釈されます。 ただ、念のため確かめてみると、 "./filename" の時はdirでもrenameでも大丈夫ですね。copyなどでもOK。 "./dir/filename" だとdirでもrenameでも駄目です。 質問はこのケースに当たります。 ところが、リダイレクトの場合は、more < "./dir/filename" や more < "dir/filename" はOKですね。 なんとなくですが、「 " "で囲めば / も使えるようにしようと思ったけど途中でやめた」 感があります。 >なぜ同じコマンドプロンプトでコマンド毎に使えたり使えなかったりするのでしょう? コマンドのプログラムの書き方次第なので、コマンドによっては、 / を受け付けたりします。 dir rename copy などはcmd.exeの中に組み込まれているので、同じ動きのはず。 別のプログラムである、fc.exe とかは / も使えますね。find.exe もOK。findstr.exe は駄目。

n_i_g
質問者

お礼

なるほど、そもそも統一されていないということなんですね。 基本的にWindowsを使う場合は、パス名は「\」を使ったほうが無難なようで… わかりやすい説明、大変参考になりました。ありがとうございました。

その他の回答 (3)

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.3

コマンドラインスイッチとしてスラッシュを使う場合があります。 ということで、パス区切りにスラッシュが使えない。ということもあるでしょう。 # https://www.ipa.go.jp/security/awareness/vendor/programmingv1/b08_01.html APIに直接渡す文字列としてならスラッシュでパス区切りに出来るかも知れませんが…。 コマンドライン引数だと、そのプログラムが使用している解析処理次第…でしょうね。

n_i_g
質問者

お礼

統一して作られていると思ったら、複雑な状態になっているようで… ご回答ありがとうございます。参考になりました。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

windowsですよね? スラッシュではなくバックスラッシュ(円マーク)では?

n_i_g
質問者

お礼

ご回答ありがとうございます。 おかげで解決できました。

n_i_g
質問者

補足

ありがとうございます。無事できました。 …が、ちょこっと調べてみたところ、Windowsではパスの区切りは「\(バックスラッシュ)」とのことですが、たとえばdirコマンドなどは「/」でも通ります。 なぜ同じコマンドプロンプトでコマンド毎に使えたり使えなかったりするのでしょう? 本文とそれた質問で大変申し訳ありませんが、もしよろしければご回答よろしくお願いします。

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

お書きのファイル配置なら、 >「rename "./a/A.txt" B.txt」 じゃなくて 「rename "./A/a.txt" B.txt」 ですね。まあ、Windowsは英字の大文字小文字を区別しないので、これが原因でエラーにはなりませんが。 ただ、大文字小文字に無頓着ということは、全角半角にも無頓着で間違えてたりしないでしょうか? Windowsでも全角半角は区別されますので、正確に同じように指定する必要があります。 コマンドプロンプトの上に、ファイルをドロップするとフルパスファイル名が得られるので、それをコピペするのが間違いないと思います。

n_i_g
質問者

補足

すみません質問文のミスでした。 「rename "./a/A.txt" B.txt」 ではなく 「rename "./A/a.txt" B.txt」 で、名前変更ができないということです。

関連するQ&A