I .cmdバッチファイルをPowerShellの.ps1ファイルに書き直そうとしています。しかし、私はMove-Item
コマンドで失敗しています。なぜかわかりません。誰かが正しい方向に私を向けることができますか?異なる拡張子のファイルを一度に移動
バッチ(すべてが正常に動作します)ファイル.CMD:
cd ../Grammar
java -jar ..\Tools\antlr-4.7-complete.jar ClarionLexer.g4 -Dlanguage=JavaScript
java -jar ..\Tools\antlr-4.7-complete.jar ClarionExprParser.g4 -visitor -no-listener -Dlanguage=JavaScript
MOVE /Y *.js ..\JavaScript\src\Generated
MOVE /Y *.tokens ..\JavaScript\src\Generated
cd ../JavaScript
のPowerShell .ps1というスクリプト(ファイルを移動しない):
Set-Location -Path ..\Grammar -PassThru
Start-Process java.exe -ArgumentList '-jar', '..\Tools\antlr-4.7-complete.jar ClarionLexer.g4 -Dlanguage=JavaScript ClarionExprParser.g4 -visitor -no-listener -Dlanguage=JavaScript'
Get-ChildItem -Recurse -Path ..\Grammar | Where {($_.Extension -eq '.js') -or ($_.Extension -eq '.tokens')} | Move-Item -Destination ..\JavaScript\src\Generated
Set-Location ../JavaScript -PassThru
#Read-Host -Prompt "Press Enter to exit"
UPDATE:
I 私が起動する前に私は文法フォルダしか持っていません2ファイル:ClarionExprParserおよびClarionLexer。
Set-Location -Path ..\Grammar -PassThru
Start-Process java.exe -ArgumentList '-jar', '..\Tools\antlr-4.7-complete.jar ClarionLexer.g4 -Dlanguage=JavaScript ClarionExprParser.g4 -visitor -no-listener -Dlanguage=JavaScript'
私は私の文法フォルダになりましたさらに、次のファイルがあります:ClarionExprParser.js、ClarionExprParser.tokens、ClarionExprParserVisitor.js、ClarionLexer.js、ClarionLexer.tokens 手段をこの部分のみを実行する
コマンドが正しく機能することを確認します。第二部を実行している
次へ:も正しく
Get-ChildItem -Recurse -Path ..\Grammar | Where {($_.Extension -eq '.js') -or ($_.Extension -eq '.tokens')} | Move-Item -Destination ..\JavaScript\src\Generated -Force
Set-Location ../JavaScript -PassThru
作品。
しかし、私はすべて一緒に置くと100%正しく動作しません。それはファイルをコピーするかのように縫う。ファイルは「文法」フォルダから移動されませんが、生成されたフォルダにコピーされます。
問題は、コマンドMoveがStart-Processコマンドを完了するのを待っていないことです。ここで
はコメントで提案されているように設定され、デバッグポイントです:
あなたは次の行に移動します '・Item'のための' -Destination'を入れていたが、 @Ansgarがあなたの問題を修正したかどうかは分かりません。再転記する前にもう一度お試しください。 – Compo
バッチスクリプトは2つのJavaプロセスを開始しますが、PowerShellスクリプトはすべての引数を組み合わせて起動する(または開始しようとする)だけです。最初に移動するファイルが正しく生成されていることを確認しましたか?あなたは 'Move-Item'コマンドでどのくらい正確にあなたは病気ですか? –
@compo Hmm ...パーザは、引数だけがラップされているので、コマンドが次の行に続くことを認識することを期待しましたが、明らかにこの場合はありません。そのフィックスアップを元に戻しました。 –