【发布时间】:2013-03-15 17:56:21
【问题描述】:
我正在尝试使用 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,这是正常的。
【问题讨论】:
-
其他人可以验证这一点,但它可能是一个 bom 字符或 windows 在字符串后面包含的东西。如果您使用
Out-File,您可以使用-Append添加文本并使用-Encoding指定正确的编码。 -
fwiw,字符是 0xFF、0xFE,然后是字母,但它们之间有 0x00。(我不认为那是 unicode)
-
还有@FrodeF 的评论。作品。如果没有 -encoding ascii,它仍然在文件开头有奇怪的字符。
-
有谁知道为什么 Powershell 的重定向行为如此令人讨厌?它似乎应该很容易修复,使其行为与 bash 更相似,而不是插入随机字符。我假设有一些原因。
标签: powershell