我使用cxfreeze从planrequest.py创建一个Windows可执行文件.它似乎工作正常,但是当我运行exe文件时,我得到了NameError: name 'exit' is not defined
在修复程序要使用的python状态中未定义name exitimport sys
.但是,我使用import sys.代码作为python脚本运行良好(例如,我在编译成可执行文件之前对命令行参数进行了广泛测试.)
import socket
import sys
if len(sys.argv) == 1:
print("Usage:")
print("PlanRequest [Request String] [Server IP (optional: assumes 127.0.0.1 if omitted)]")
exit()
#[do stuff with the request]
Run Code Online (Sandbox Code Playgroud) 我搜索了SO,我可以找到很多从VBA运行PowerShell脚本的例子,但我找不到任何运行简单命令的例子.
例如,这有效:
Dim retval As Variant
retval = Shell("PowerShell ""C:\MyScript.ps1""", vbNormalFocus)
Run Code Online (Sandbox Code Playgroud)
但这不是:
Dim retval As Variant
Dim pscmd As String
pscmd = "PowerShell " & _
Chr(34) & "Get-ScheduledTask" & _
" -TaskName " & Chr(34) & "My Task" & Chr(34) & _
" -CimSession MYLAPTOP" & Chr(34)
retval = Shell(pscmd, vbNormalFocus)
Debug.Print pscmd
'pscmd = PowerShell "Get-ScheduledTask -TaskName "My Task" -CimSession MYLAPTOP"
Run Code Online (Sandbox Code Playgroud)
我知道我可以将PS命令写入文件,将其作为脚本执行,然后删除该文件,但这似乎不是很优雅.
我正在尝试使用 WMI 获取两台显示器支持的最大分辨率(因为它将成为 VBScript 的一部分)我尝试了以下 WMI 命令,但我要么得到错误的结果,要么只获取一台显示器的信息。
C:\>wmic path win32_videocontroller get videomodedescription /format:list
VideoModeDescription=1366 x 768 x 4294967296 colors
C:\>wmic path win32_displaycontrollerconfiguration get videomode /format:list
VideoMode=1024 by 768 pixels, True Color, 60 Hertz
Run Code Online (Sandbox Code Playgroud)
根据显示设置,我的笔记本电脑显示器是 1366x768...不知道 WMI 从哪里获取 1024x768。另外,如果我将笔记本电脑显示器的分辨率“显示设置”更改为 800x600,我会得到以下结果:
C:\>wmic path win32_videocontroller get videomodedescription
VideoModeDescription=800 x 600 x 4294967296 colors
Run Code Online (Sandbox Code Playgroud)
因此,准确报告我当前分辨率的命令并没有告诉我最大分辨率是多少。(我不在乎愚蠢的最终用户是否会降低分辨率,我只想知道他们的显示器能够支持什么分辨率。)
如您所见,到目前为止,这些方法都没有向我显示有关我也连接到笔记本电脑的外部显示器的任何信息。如果我使用Win32_DesktopMonitor
,我会获得有关外部显示器的各种信息,但不会获得其分辨率。
C:\>wmic path win32_desktopmonitor get /format:list
Availability=8
Bandwidth=
Caption=HP L1710 LCD Monitor
ConfigManagerErrorCode=0
ConfigManagerUserConfig=FALSE
CreationClassName=Win32_DesktopMonitor
Description=HP L1710 LCD Monitor
DeviceID=DesktopMonitor1
DisplayType=
ErrorCleared=
ErrorDescription=
InstallDate=
IsLocked=
LastErrorCode=
MonitorManufacturer=Hewlett-Packard …
Run Code Online (Sandbox Code Playgroud) 我的前任为 HR 编写了一个 Web 应用程序,用于从 HRMS 的 401k 贡献中提取数据。事实证明,他的报告仅在捐款金额为精确金额而不是百分比时才提取追加捐款。他使用实体框架来做到这一点。我是脚本编写者,不是程序员。我知道阿多。我不知道实体框架。
数据库有一个名为 的列EARNED
。追赶贡献金额获取代码 D03。追赶贡献百分比获取代码 D03B。该列还有其他几个可能的值:D04、D31、E40 等。不知何故,他的报告仅提取 D03 行。它还需要拉动 D03B 行。
如果我写 SQL,它会是这样的
SELECT *
FROM [SageHRMS_900].[dbo].[UPCHKD]
WHERE [EARNDED] = 'D03B'
OR [EARNDED] = 'D03'
Run Code Online (Sandbox Code Playgroud)
显然实体框架不使用类似的东西。相反,我看到的只是这样的东西
hrmsEntity hrms = new hrmsEntity(dbConnection);
var detail = hrms.TRP_ConDetail.ToList();
foreach (var line in hrms.TRP_ConDetail.ToList())
{
fileData += line.Plan + line.RecordID + line.Date + line.SSN + line.Fund + line.LoanNum +
line.Amount + line.Salary + line.SalaryType + line.ContType + line.StateTax +
line.LoanPayType + line.Filler01 + Environment.NewLine;
} …
Run Code Online (Sandbox Code Playgroud)