前提・実現したいこと
powershellのタイムスタンプを変更するコマンド
powershell -Command Set-ItemProperty C:\hoge.text -name LastWriteTime -value '2019/05/13 14:00:00'
のパスと日付の部分を標準入力で渡して実行できるbatファイルを作ろうとしています。
発生している問題・エラーメッセージ
powershell -Command Set-ItemProperty %path% -name LastWriteTime -value '%date%'
のようにして変数を渡そうとするとエラーになってしまいます。
error
1'powershell' は、内部コマンドまたは外部コマンド、 2操作可能なプログラムまたはバッチ ファイルとして認識されていません。
該当のソースコード
bat
1@echo off 2setlocal 3 4set /p path="file_path : " 5set /p ok="file = %path% OK? (y/n) :" 6 7if /i {%ok%}=={y} (goto :yes) 8EXIT 9 10:yes 11set /p date="date (e.g. 2019/05/13 14:00:00): " 12 13echo creation… 14powershell -Command "Set-ItemProperty %path& -name CreationTime -value '%date%'" 15 16echo lastWrite… 17powershell -Command "Set-ItemProperty %path& -name LastWriteTime -value '%date%'" 18 19endlocal 20pause 21goto :EOF 22
試したこと
下記のように環境変数なしの場合はうまく動くことは確認しましたが、
コマンドに中で環境変数を参照していなくても、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%

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/13 07:29
2019/05/13 08:41
2019/05/13 08:51
2019/05/13 09:10