2017-07-05 4 views
1

私は、ユーザーのPCから項目をコピーして別のコンピュータに配置するシンプルなスクリプトに問題があります。ただし、コピー先のファイルパスにはスペースが含まれています。私はこの問題を修正する複数の方法を試みましたが(一部は完全に理解していません)、文字列の前後に二重引用符を使用してpowershellを実行するように強制しました。スペースによるバッチファイルのエラー

この状況に非常に簡単な前兆を与えるために、私は最初にこのスクリプトをWindows 10でPowershellを使って作成したことを付け加えなければなりません。また、Powershellでは.batとしてではなく完全に機能すると付け加えてください。私は、言語に多少の違いや、プログラムを通して解釈されるものがあるかもしれないことを理解しています。

Copy-Item $ENV:USERPROFILE\Desktop\VAST.accdb -destination "\\PRECDP19670\C$\Users\WAKE\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup" -Force -PassThru -Verbose 

先がファイルパスにスペースが含まれています。ここ

は、問題の文字列です。

ご協力いただきましてありがとうございます。

+1

'Copy-item'は、PowerShellでのみ実行できるPowerShellコマンドです。 –

+1

"言語に若干の違いがあるかもしれません"とは、あまりにも控え目な言葉です。バッチスクリプトはPowerShellスクリプティングとはまったく異なりますが、まったくそうではありません。この質問が意味のある回答になる前に、PowerShellまたはバッチファイル(またはバッチファイルからのPowerShell *)を使用しているかどうかを判断する必要があります。 PowerShellのフォームバッチファイルを呼び出すには、スクリプトを独自の '.ps1'ファイルに入れて、' powershell.exe -file script.ps1'を起動するのが最も負担になりません。コマンドを直接実行することは可能ですが、すぐにクォートの問題にぶつかり、 '-EncodedCommand'のような厄介な回避策が必要になります。 –

+0

@JeroenMostertありがとうございました。私は実際にPowerShellを使用してスクラップし、スクリプトを一括して作成しました。何よりも、バッチファイルで作業するのは難しいと思っていましたが、PowerShellで書いていたときよりも簡単です。 単純な** xcopy **を使用して、すべてがうまくいきます。 – zhaque

答えて

0

ビルに記載されているとおり、BATファイルはPowerShellを実行可能ファイルとして呼び出す必要があります。

PowerShell.exe -command 'Copy-Item $ENV:USERPROFILE\Desktop\VAST.accdb -destination "\\PRECDP19670\C$\Users\WAKE\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup" -Force -PassThru -Verbose 
+0

コマンド全体を二重引用符で囲み、二重引用符をバックスラッシュ '\"でエスケープするか、または二重引用符を一重引用符で置き換えてください。 – LotPings

+0

「Copy-Item」コマンドをPowerShellプロンプト? –

+0

@Bill_Stewart私は約200台以上のマシンがあり、30台のバッチで各マシンにこのスクリプトを実行する必要があります。だから私はこれらの小さなスクリプトを30台ごとに作成しました。 PowerShellスクリプトを実行するだけで、必要なときに実行できるので、スクリプトを簡単に実行するために.batに全部をプッシュしました。 PowerShellを使用していたときに、 – zhaque

関連する問題