2016-11-07 7 views
1

私は、ゲーム「Kill​​ing Floor 2」用にサーバーを設定するプロセスを自動化するスタンドアロンのバッチファイルを作成しようとしています。これを行うには、必要なリソースにアクセスするためにPowerShellスクリプトを作成して実行する必要があります。これまでのところ私はこのバッチ付きのpowershellスクリプトの作成と実行

@echo off 
del script.ps1 
(echo $url = "https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip") >> script.ps1 
(echo $output = "$PSScriptRoot\steamcmd.zip") >> script.ps1 
(echo $start_time = Get-Date) >> script.ps1 
(echo $wc = New-Object System.Net.WebClient) >> script.ps1 
(echo (New-Object System.Net.WebClient).DownloadFile($url, $output)) >> script.ps1 
(echo Write-Output "Time taken: $((Get-Date).Subtract($start_time).Seconds) second(s)") >> script.ps1 
(echo Add-Type -AssemblyName System.IO.Compression.FileSystem) >> script.ps1 
(echo function Unzip) >> script.ps1 
(echo {) >> script.ps1 
(echo param([string]$zipfile, [string]$outpath)) >> script.ps1 
(echo [System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, $outpath)) >> script.ps1 
(echo }) >> script.ps1 
(echo Unzip "$output" "$PSScriptRoot") >> script.ps1 
PowerShell.exe -NoProfile -Command "& {Start-Process PowerShell.exe -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File script.ps1 -Verb RunAs'}" 
timeout /t 5 
SteamCmd +login anonymous +force_install_dir ./kf2_ds +app_update 232130 +exit 
cd kf2_ds 
start kf2server.bat 

はしかし、PowerShellスクリプトの書き込み時に、私は次のエラー

.DownloadFile($url was unexpected at this time. 

にこの作業を行う方法上の任意のアイデアやこれを達成するためのより良い方法を取得していますか?

+1

多量のエコーで戦うのではなく、[バッチ+ PowerShellハイブリッド](http://www.dostips.com/forum/viewtopic.php?f=3&t=5526)フォーマットに興味があるかもしれません。一時的な.ps1スクリプトを作成します。 [この記事](http://www.dostips.com/forum/viewtopic.php?p=45095#p45095)は、私の好みの方法を示しています。ちなみに、なぜあなたは '$ wc'を定義していますが、それを使うことはありませんか? – rojo

+0

$ wcは以前のバージョンのスクリプトから残されていました。私はそれを削除するために思い出したので、それを指摘していただきありがとうございます。 –

+0

批判的ではありませんが、好奇心はありませんが、引数を付けてPowerShellスクリプトを直接呼び出すのはどうですか?デバッグするのは簡単でしょうか? – Esperento57

答えて

3

それは

(
echo string1 
echo string2 
)>filename 

を試してみてください

(カッコ内のエコー文字列を囲む)する必要はありませんが、あなたの問題は )(echoを閉じていることである - 二 (は特殊文字としては効果がありません - これは標準文字として扱われますので、 )の文字は、キャレット ^)echoとなるようにエスケープする必要があります(メソッドを使用するかどうかは関係ありません)。

+0

ありがとう!それは今働いている。 –

関連する問題