【发布时间】:2018-08-02 23:17:04
【问题描述】:
我正在编写一个脚本,需要将文件的内容作为设置变量的输入。我正在使用 Out-File 生成一个文本文件:
$string | Out-File -FilePath C:\Full\Path\To\file.txt -NoNewLine
然后我正在使用该文件批量设置变量:
set /P variablename=<C:\Full\Path\To\file.txt
该文件的内容是一个唯一的 id 字符串,实际上看起来像这样:
1i32l54bl5b2hlthtl098
当我回显这个变量时,我得到了这个:
echo %variablename%
■1
当我在输入文件中尝试了不同的字符串时,我看到回显的是 ■ 字符,然后是字符串中的第一个字符。所以,如果我的字符串是“apfvuu244ty0vh”,那么它会回显“■a”。
为什么没有将变量设置为文件的内容?我正在使用来自this stackoverflow post 的方法,其中选择的答案说要将此语法与 set 命令一起使用。难道我做错了什么?使用完整路径作为集合变量的输入是否存在问题?
【问题讨论】:
-
我会假设文件没有保存为 ASCII 文本。它很可能是某种形式的带有 BOM 的 unicode。
-
Notepad++ 告诉我它被编码为 UCS-2 LE BOM。该文件由 Powershell 中的 Out-File 生成,因此我将探索我拥有的任何编码选项并进行报告。
-
是的。你可以告诉Powershell to output the file as ascii。请看一下 Powershell 代码。
-
做到了。非常感谢,我已经添加了 powershell 信息(应该添加到一起)。你能给出关于编码的答案以便我接受吗?
标签: windows powershell batch-file