使用PowerShell消除Windows系统中WiFi网络名字后面的数字

我之前用过的手机热点的SSID是“Azure’s iPhone”,换了新手机之后再次打开热点,发现网络名字被Windows显示成了“Azure’s iPhone 2”,which 让我不太高兴。

解决方案:以管理员权限运行PowerShell,输入

然后输入

注意-like选项使用的是通配符,因此会匹配到iPhone而不是iPhone 2。结果看起来如下,只有一条:

确认无误后,加上Remove-Item进行删除操作:

然后把iPhone 2改回来:

-match选项使用的是正则表达式。关闭WLAN再打开,重新联网,问题解决。


由于管道中的Get-ItemProperty得到的是该注册表项下的值,而不是代表该项本身了,所以使用-PipelineVariable通用选项可以把管道前面的结果(这里是Get-ChildItem(ls)得到的项对象)存放在变量中以便后续操作,这要求PowerShell v4+。版本太低的话只好这么写了……看上去就很不pipeline了

 

使用PowerShell批量生成语音TTS文件

在校对《封印者》语音包的过程中,为了确认每个技能和语音ID的对应关系,其中一个方法就是将音频文件替换为容易辨识的内容,然后在游戏里试验并记录对应关系。

本文以缇娜的至高之翼语音为例进行讲解。拆包得到的语音文件名有一定规律,例如“VOICE_USN_SI_RARE_COSTUME_3_ARMS_SKILL_1.OGG”和“VOICE_USN_SI_RARE_COSTUME_3_ARMS_SKILL_11_1.OGG”。我们要做的就是利用Windows自带的PowerShell来根据文件名合成出对应的TTS语音。

代码如下:

用法如下:

首先新建一个文件夹,例如“CloTTS”。然后将上述代码保存为ps1文件,例如“CloTTS\CloTTS.ps1”。然后在资源管理器空白处按住Shift点击鼠标右键,选择“在此处打开PowerShell窗口”。我们假设解包出的原始语音包按文件夹分类存放,目录结构如下:

C:\Tina_RareCostume2
1.ogg
2.ogg

C:\Tina_RareCostume3
1.ogg
2.ogg

在PowerShell窗口中输入

该脚本就会在CloTTS\Output下生成两个文件夹“Tina_RareCostume2”和“Tina_RareCostume3”,里面是产生的TTS WAV音频文件。然后使用你喜欢的转码工具(例如foobar 2000)将文件转换为OGG即可。其实,只要将文件夹拖进PowerShell窗口就会自动变成路径。

细节解释:

语音合成使用了Microsoft Zira Desktop。这是Windows自带的英文女声音源,你也可以换成你喜欢的(比如解锁Cortana之后用她的语音)。修改$syn.Rate可以修改语速(-10~10)。

在构造音频内容的时候,需要做一些处理,例如文件名的共用前缀可以省略。下划线要替换掉,否则语音引擎会读成“underscore”。此外,原始文件的命名可能导致语音歧义,如“VOICE_USN_SI_RARE_COSTUME_3_ARMS_SKILL_30_1”中的“30 1”,容易与31混淆。我们使用MakeVoiceString函数来做相应的处理。首先替换掉公共前缀,然后利用正则表达式将两个数字中间有空格的情况替换为“30,#1”的形式(这样语音引擎会读作“thirty, number one”),最后将其余的下划线替换为空格即可。制作其他角色的语音的时候只要针对性修改这里的规则即可。

Windows下文件散列值的计算

在Windows平台下可以不借助第三方工具计算一个文件的散列值。

按Win+R调出“运行”对话框,输入powershell,启动Windows PowerShell。输入以下命令:

 

例如:Get-FileHash “C:\Users\Azure\Desktop\foo.apk” -Algorithm MD5
这将计算文件的MD5值。还可以使用SHA1、SHA256等算法。
当然 输入完Get-FileHash+一个空格之后,可以直接把文件拖进窗口内,会变成文件路径。

use-powershell-to-calc-md5

可以使用的算法参数有:

  • SHA1
  • SHA256
  • SHA384
  • SHA512
  • MACTripleDES
  • MD5
  • RIPEMD160

如果省略-Algorithm参数,则默认SHA256算法。