12

Powershellを使用して3つのプレーンテキスト行をファイルにエコーしようとしています。

echo "#Generated" > psftp.scp
echo "put test.txt" >> psftp.scp
echo "quit" >> psftp.scp

次に、psftp.exeバッチモードを使用してファイルを実行します(SFTPでコマンドを実行します)が、psftpエラーで無効な文字が表示されます。

psftp: unknown command " ■#"

私は何が欠けていますか?Windowsのメモ帳でファイルを手動で入力すると、(psftp)が機能します。最初の行を(#Generated)に変更しても、最初の部分のブロック記号でこのエラーが発生します。

「すべての記号を表示」をオンにしてNotePad++でファイルを表示しようとしましたが、行末にCRとLFしか表示されませんでした。これは正常です。

4

3 に答える 3

9

リダイレクトの代わりに set/add-content を使用してみてください。エンコーディングを設定する必要がある場合もあります。

"#Generated" | set-content psftp.scp -Encoding Ascii
"put test.txt" | add-content psftp.scp -Encoding Ascii
"quit" | add-content psftp.scp -Encoding Ascii
于 2013-03-15T18:32:27.293 に答える
0

私の場合、.ps1 を .cmd ファイルの powershell にパイプしていました。

type script.ps1 | powershell -ExecutionPolicy Bypass

他の方法で実行した場合はスクリプトにエラーはありませんでしたが、この方法で実行すると、無効な文字が原因で最初の行 (コメント行) で構文エラーがスローされました。

.ps1 ファイルを wScite エディタで保存すると、デフォルトは「UTF-8 with BOM」であることがわかりました。「UTF-8」に変更した後、スクリプトをpowershellにパイプするとうまくいきました。

于 2020-06-19T01:18:33.873 に答える