プロが教えるわが家の防犯対策術!

Windowsのbatファイルでrenameをするにはどうすればよいでしょうか?

カレントディレクトリ
└ A

というディレクトリ構造があって、Aの中には「a.txt」があるとします。

カレントディレクトリから、
「rename "./a/A.txt" B.txt」
と書いてあるbatファイルを起動しても、「a.txt」の名前が変更されません。

「指定したパスが見つかりません。」と出てきてしまいます。
ダブルクォーテーションを取ったりつけたり、絶対パス、相対パスを書いたりと
いろいろ試しましたがだめでした。

何か方法はないでしょうか?

A 回答 (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 は駄目。
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/09/08 23:14

コマンドラインスイッチとしてスラッシュを使う場合があります。


ということで、パス区切りにスラッシュが使えない。ということもあるでしょう。
# https://www.ipa.go.jp/security/awareness/vendor/ …

APIに直接渡す文字列としてならスラッシュでパス区切りに出来るかも知れませんが…。
コマンドライン引数だと、そのプログラムが使用している解析処理次第…でしょうね。
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/09/08 23:16

windowsですよね?


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

この回答への補足

ありがとうございます。無事できました。
…が、ちょこっと調べてみたところ、Windowsではパスの区切りは「\(バックスラッシュ)」とのことですが、たとえばdirコマンドなどは「/」でも通ります。
なぜ同じコマンドプロンプトでコマンド毎に使えたり使えなかったりするのでしょう?

本文とそれた質問で大変申し訳ありませんが、もしよろしければご回答よろしくお願いします。

補足日時:2014/09/08 22:34
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/09/08 23:17

お書きのファイル配置なら、


>「rename "./a/A.txt" B.txt」
じゃなくて
「rename "./A/a.txt" B.txt」
ですね。まあ、Windowsは英字の大文字小文字を区別しないので、これが原因でエラーにはなりませんが。
ただ、大文字小文字に無頓着ということは、全角半角にも無頓着で間違えてたりしないでしょうか?
Windowsでも全角半角は区別されますので、正確に同じように指定する必要があります。

コマンドプロンプトの上に、ファイルをドロップするとフルパスファイル名が得られるので、それをコピペするのが間違いないと思います。

この回答への補足

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

補足日時:2014/09/08 22:02
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています