• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:バッチファイルの変数について)

バッチファイルの変数について

このQ&Aのポイント
  • バッチファイルの変数を使用してファイルのコピーを行いたい場合、PATH_NAMEの変数を正しく設定する必要があります。
  • コピー元のファイルのパスをPATH_P1やPATH_P2として設定し、それぞれのパスを順番にコピー先のパスに指定します。
  • また、ファイル数を設定する変数FILE_NUMでコピーするファイルの数を指定し、コピー元のファイルを順番にコピー先にコピーします。

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

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

ん? 手元の Vista ではそれっぽい方法できちんと設定できてます. 最初の質問にあったプログラムに ・最初に setlocal enabledelayedexpansion を入れる ・SET /p PATH_NAME = PATH_P%N% を SET PATH_NAME=!PATH_P%N%! にする ・copy を (そんなファイルは当然ないので) echo %PATH_NAME% に変更 として, PATH_P1, PATH_P2 に与えたものが表示されることは確認しています. 「これでもPATH_NAMEが設定されません。」をどう確認したのか, ちょっと気になりますが....

otameshi_001
質問者

お礼

ありがとうございました。 結局、pita-gora様からご指摘いただいたように、「空白」が原因でした。 質問の仕方が悪く、ご迷惑をおかけしました。

その他の回答 (2)

  • pita-gora
  • ベストアンサー率70% (102/145)
回答No.3

こんにちは。 この行の「=」の前後の空白を取りましょう。 SET PATH_NAME = !PATH_P%N%! ↓ SET PATH_NAME=!PATH_P%N%! 空白がある場合、%PATH_NAME%ではなく、%PATH_NAME %でないと参照できませんよ。 あと if "%N%"== "FILE_NUM " (goto EXIT) は if "%N%"=="%FILE_NUM%" goto EXIT にしましょう。

otameshi_001
質問者

お礼

pita-gora様、ありがとうございました。 おっしゃる通り、空白を取ったら、うまくいきました。 遅延展開について、最初にご教授頂いたのがTacosan 様でしたので、Tacosan 様をベストにさせていただきましたが、決定的なご指摘だったので、大変感謝しております。 ありがとうございました。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

推測はできるけど一応「何をしたいのか」は書いておこうよ. 遅延展開でできると思うけど.

otameshi_001
質問者

補足

大変失礼しました。 すでに推測していただいているとは思いますが・・・ PC上のある特定のファイルを、指定したフォルダにすべてコピーするものです。 実際には、コピーしたいファイルは順次増やしていくつもりなので、こういったコードにしました。 ちなみに、遅延展開というのは、これであっていますか? SETLOCAL enabledelayedexpansion SET PATH_NAME = !PATH_P%N%! copy %PATH_NAME% C:\TEST\ ENDLOCAL これでもPATH_NAMEが設定されません。

関連するQ&A

専門家に質問してみよう