質問: %path% OK? (y/n) :" if /i {%ok%}=={y} (goto :yes) EXIT :yes set /p date="date (e.g. 2019/05/13 14:00:00): " echo creation... powershell -Command "Set-ItemProperty %path& -name CreationTime -value '%date%'" echo lastWrite... powershell -Command "Set-ItemProperty %path& -name LastWriteTime -value '%date%'" endlocal pause goto :EOF ``` ### 試したこと 下記のように環境変数なしの場合はうまく動くことは確認しましたが、 コマンドに中で環境変数を参照していなくても、powershellコマンドの前に`set hogehoge`のような記述があると同様のエラーが出てしまいます。 ``` @echo off setlocal echo lastWrite... powershell -Command "Set-ItemProperty C:\hoge.text -name lastWriteTime -value '2019/05/13 14:00:00'" endlocal pause ``` ネットで公開されているbatファイルの中でpowershellコマンドを実行しているものをみると同じような記述の仕方をしているのですが、 なぜうまくいかないのか有力な情報にたどり着けず困っております。 初歩的な質問かとは思いますが、どなたかご教示いただけないでしょうか? よろしくお願いいたします。 ### 動かなかった原因 無事に解決しましたので、今回の原因をまとめておきます。 原因 → 対策 * 環境変数に`path`という名前を使っていた → `fpath`に変更 * 同様に`date`も変更 → `cdate` * 変数参照する部分が`%fpath&`になってた → `%fpath%`
回答: `PATH`という名前の環境変数(大文字小文字関係無し)は、特別な意味を持っているので、一般の変数としては使ってはいけません。 変数名を変えましょう。 `PATH`に間違った内容をセットすると、コマンドが実行できなくなります。