计算化学公社

标题: 在windows中使用powershell运行ORCA时应注意更新powershell [打印本页]

作者
Author:
Stardust0831    时间: 2025-4-10 00:06
标题: 在windows中使用powershell运行ORCA时应注意更新powershell
本帖最后由 Stardust0831 于 2025-4-10 01:38 编辑

近来发现很多新人喜欢用powershell来算orca,而windows自带的powershell5在运行orca时有诸多不便,社长在《量子化学程序ORCA的安装方法》一帖中写的这段话就充分体现了这点:
如果在Windows下运行ORCA,不要用PowerShell,要么用cmd要么用cmder。因为PowerShell里通过重定向产生的ORCA输出文件默认是Unicode编码的,Multiwfn没法读取里面的信息。OfakeG程序也同样不认Unicode编码。

powershell在使用上确实有一些方便之处,对于希望使用powershell来运行orca的新人,我的建议是:
可以用powershell,但是需要将powershell升级至powershell7。


powershell的更新非常简单,通过WinGet就可以轻松完成:
在 Windows 上安装 PowerShell - PowerShell | Microsoft Learn
安装时会涉及的命令如下:
1.查看当前版本:
在 PowerShell 界面中输入以下命令:
  1. $PSVersionTable
复制代码
执行此命令后,系统会显示一个包含 PowerShell 完整信息的列表。在这个列表中,PSVersion 字段会显示当前的 PowerShell 版本号。例如,如果显示的 PSVersion 值为 5.1.22000.653,那么你的系统中的 PowerShell 版本就是 5.1.22000.653
2.搜索最新版本powershell
  1. winget search Microsoft.PowerShell
复制代码
2.使用WinGet完成升级:
  1. winget install --id Microsoft.PowerShell --source winget
复制代码


目前最新版本powershell7相较于powershell5有比较多的更新,在升级到powershell7以后,社长博文提到的这些缺点不再存在,而且还多了很多便捷的地方。下面介绍一些个人认为对实际计算帮助很大的更新:
1.默认编码也变成了和cmd/cmder一样的UTF-8,使Multiwfn和OfakeG程序可以顺利读入powershell重定向产生的文件。
2.可以使用类似"D:/orca/orca.exe test.inp |tee test.out",调用orca计算当前目录下的test.inp文件,将输出消息同时打印到屏幕上和输出到test.out文件中。
3.可以根据输入过的指令补全指令,效果如图:
(, 下载次数 Times of downloads: 5)
orc以后的斜体字就是powershell自动补全的。可以按>键接受补全。

当前powershell也有不少局限性:
powershell目前仍然对很多bash环境下的命令支持不全,在用bash脚本调用orca批量计算时会出问题。所以,如果你有使用bash脚本调用orca来批量完成计算的需求,仍然建议使用社长博文中提到的cmder,或者直接用wsl+装linux版本的orca。下面给出一个典型的批量运行脚本的例子:
(将orca安装到D:\orca文件夹中后,下列脚本可以批量计算当前目录下以sp.inp结尾的输入文件,并把gbw文件文件批量转成multiwfn支持的molden.input格式,用于波函数分析。)
  1. for inf in *sp.inp
  2. do
  3. echo Running ${inf} ...
  4. /D/orca/orca ${inf} |tee ${inf//inp/out}
  5. echo ${inf} is finished
  6. echo
  7. done

  8. for inf in *sp.inp
  9. do
  10. echo Running ${inf} ...
  11. /D/orca/orca_2mkl ${inf//.inp} -molden
  12. echo ${inf} is finished
  13. echo
  14. done
复制代码

注:
Windows自带的叫做Windows Powershell,目前最高版本是5.1,它是Windows系统的一个组成部分,是基于.net构建的。它的二进制文件为powershell.exe
PowerShell 7是基于.net core构建的跨平台版本。它的二进制文件为pwsh.exe
在Windows上安装PowerShell 7并不会代替Windows PowerShell,他们会平行存在,可同时使用。










作者
Author:
exity    时间: 2025-4-10 07:48
好帖,生命在于折腾。




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3