powershell - 为什么 PowerShell 在我的文件中输入中文字符?
问题描述
我正在尝试制作一个将.txt
文件内容转换为变量的系统。不过,这不是我的问题;出于某种原因,我的文件正在读取我未输入且无法使用的字符。
请注意:我正在做的事情绝不是有效的,我很肯定还有其他方法可以解决这个问题,但这对我来说是最好的方法。此外,在编码方面,我并不是非常聪明。只是想我会把它扔在那里。
首先,让我向您展示我现有的系统。
值.txt
4
这个文件有我想变成一个变量的内容。
批处理文件
setcmdvar.bat
set cmdvar=
我将其留空,以便我可以将 的内容value.txt
放在最后(稍后会详细介绍)。
开始.bat
@echo off
call PowerShell.exe cd "C:\Users\%username%\Desktop\Folder"; $PSvar = Get-Content value.txt; $PSvar >> setcmdvar.bat
pause
call setcmdvar.bat
pause
echo The variable equals %cmdvar%.
pause
exit
第二行在start.bat
PowerShell 中创建此脚本:
PowerShell 脚本
cd "C:\Users\%username%\Desktop\Folder\"
$PSvar = Get-Content value.txt; $PSvar >> setcmdvar.bat
这会在 PowerShell 中创建一个变量$PSvar
,它等于 ; 的内容value.txt
。在我们的例子中是 4。然后,它将$PSvar
(4) 放在 的末尾setcmdvar.bat
,使用>>
,将其更改为:
setcmdvar.bat(已更改)
set cmdvar=4
或者,至少,据我所知,它应该。相反,它将文件更改为:
set Items=桔瑳楲杮椠業獳湩桴整浲湩瑡牯›⸢ †⬠䌠瑡来牯䥹普††††㨠倠牡敳䕲牲牯›㨨
嵛慐敲瑮潃瑮楡獮牅潲割捥牯䕤捸灥楴湯 †⬠䘠汵祬畑污晩敩䕤牲牯摉㨠吠牥業慮潴䕲灸捥整䅤䕴摮晏瑓楲杮
或者其他一些奇怪的字符组合。我看了一下,是中文的。还有一些其他字符,例如 †、⬠、›、⸢、 和 。我不知道为什么要输入这些。除此之外,start.bat 还显示以下内容:
Press any key to continue . . .
(PowerShell script runs here)
'■s' is not recognized as an internal or external command,
operable program or batch file.
Press any key to continue . . .
The variable equals .
Press any key to continue . . .
(exit)
我没有输入“■s”,我认为这可能是问题所在。不管是什么,有人有什么想法吗?
PS 如果我的代码很复杂,或者它看起来很糟糕,我很抱歉,但我这样做是有原因的。实际上,主要是我的无能。但我认为这样更好。
另外,我知道有类似的命令for /f "delims=" %a in ('ver') do @set foobar=%a
(我刚刚从互联网上删除了这个),但我已经尝试过类似的命令,我想我只是不太了解它们,因为它们不起作用。
感谢您的帮助!
解决方案
>>
混合编码有问题。另外它默认为utf16。我建议改变
$PSvar >> setcmdvar.bat
到
add-content setcmdvar.bat $PSvar
我不确定如何将所有内容保持在一条线上。您可以像这样制作 setcmdvar.bat:
set cmdvar=^
所以它继续。
推荐阅读
- reactjs - 使用 useRef Hook 映射数据
- text - 如何在 Corvid 中使文本静音/取消静音视频?
- docker - Docker-compose - 在单个主机上 -scale 的目的是什么?
- python - Pandas Groupby CumSum 仅在连续行上
- python - 在 DRF 中创建对象和子对象
- python - jupyter notebook ipywidgets 未显示(无错误)
- skypedeveloper - 如何使用Skype SDK通过用户提供的URI加入会议
- python - 合并两个列表(偶数/奇数元素)
- shell - 从 Kubernetes 部署对象中提取特定的 args 值
- excel - VBA Excel 到 VBA 书签 - 保留书签