2012-03-21 7 views
1

cmdコマンドの出力をpowershellの変数(配列)に書き込む必要があります。出来ますか? WinSCP(SFTPクライアント)でcmdスクリプトを使用し、sftpサーバーに接続しているときにpowershellではなくcmdコマンドのみを使用できるため、このスクリプトが必要です。しかし、転送が成功したかどうかを確認するために、リモートディレクトリにあるファイルの名前とサイズを取得する必要があります。これはsftpに接続していくつかのファイルをアップロードするスクリプトです:cmd to powershell connection

C:\"Program Files"\WinSCP\winscp.com /console /command "option batch abort" "option confirm off" "open sftp://login:[email protected]" "cd import" "option transfer binary" "put C:\_ZbankyNaOdoslanie\*.gpg" "put C:\_ZbankyNaOdoslanie\*.chk" "close" "exit" 

ありがとう。

答えて

3

この行は、コール演算子&を使用してPowerShellで呼び出し、stdoutおよび/またはstderrを変数に割り当てることができます。

例:

$output = & "C:\Program Files\WinSCP\winscp.com" /arg1 /arg2 

変数$outputは、文字列の配列であろう。出力の各行は配列要素になります。

より多くの例:

  • だけをstdout:$output = & "C:\Program Files\WinSCP\winscp.com" /arg1 /arg2 2>$null
  • ちょうど標準エラー出力:$output = & "C:\Program Files\WinSCP\winscp.com" /arg1 /arg2 1>$null
  • 両方:$output = & "C:\Program Files\WinSCP\winscp.com" /arg1 /arg2 2>&1
+0

、アンディ、ありがとうございました。フォルダ名の空白を避けるために、WinSCPをc:\ WinSCPに再インストールしましたが、「C:\ WinSCP \ winscp.com/console/command」という用語は、コマンドレット、関数、またはコマンドの という名前として認識されません。スクリプトファイル、または実行可能なプログラム。スペルを確認してください。 名前が含まれている場合、またはパスが含まれている場合は、パスが正しいことを確認してから、もう一度 を試してください。 – culter

+0

@culter右引用符と、WinSCP引数の間に次のようなスペースを入れてください: 'C:\ Path to \ winscp.com"/console/command "option batch abort" ... ' –

+0

Andy今はスペースがありません。私はそれをC:\ WinSCPディレクトリに再インストールしました。 – culter

関連する問題