だいたいパスのマクロで間違えている説
結論から書くとパス系、ファイル名系のマクロは、ダブル(シングル)クォーテーション"$(...)"
で囲みましょう。
copy
コマンドと$(TargetPath)
マクロで例えます
次のようにクォーテーションで囲っていない場合、エラーになる可能性があります。
マクロが置換される前
copy $(TargetPath) C:\Test\
$(TargetPath)
マクロは実際のビルド出力先のフルパスに置き換えられます。フルパスを仮にC:\foo bar
とします。
下記にマクロがフルパスに置き換わった例を書きます。
マクロが置換された後(動作しません)
copy C:\foo bar C:\Test\
copy
コマンドに限った話ではありませんが、パスにスペース文字が含まれるとコマンドとしての意味が変わってきます。結果コマンド構文エラーになります。
基本的な書き方👍
rem 書式: copy <送り側> <受け側>
rem ^ (スペース(空白)文字で区切ることで「送り側」と「受け側」を認識する)
rem 細かいオプションは省いてますが、スペース文字ひとつで意味が変わります
copy "$(TargetPath)" "C:\Test\"
大事なことなので繰り返しますが、パスはクォーテーション"$(...)"
で囲みましょう。
【おまけ】rename
のワナ
👎
rename "C:\Test\$(TargetFileName)" "C:\Test\$(TargetFileName).old"
???💢
これにはちょっと引っかけられました。
rename
のヘルプは次のようになってます。
RENAME [ドライブ:][パス]ファイル名1 ファイル名2
REN [ドライブ:][パス]ファイル名1 ファイル名2
ファイル名2 には新しいドライブもパスも指定できないので注意してください。
もうお分かりですよね。
👍
rename "C:\Test\$(TargetFileName)" "$(TargetFileName).old"
素直にmove
コマンドに切り替えたほうが良い説ある…。