我们正在编写一个复杂的富桌面应用程序,需要提供报表格式的灵活性,因此我们认为我们只需将对象模型公开给脚本语言.时间到了这意味着VBA(这仍然是一个选项),但托管代码衍生品VSTA(我认为)似乎已经枯萎了.
什么是Windows .NET上嵌入式脚本语言的最佳选择?
如何使用PowerShell(版本1.0)脚本删除文件上的ReadOnly属性?
我使用WinXP,VS 2008和团队资源管理器连接到Team Foundation Server.
我需要脚本(例如BAT文件脚本)以下内容:
My TFSProject is $/Arquitectura/Main/, mapped to the path C:\TFS\Arquitectura
Does anyone have any sample code or suggestions?
问题
我有一个表单,在提交时,将运行基本代码来处理提交的信息并将其插入数据库以显示在通知网站上.另外,我有一个已经注册通过电子邮件和短信接收这些通知的人员列表.这个列表是微不足道的(只推动了大约150个),但这足以导致需要花费一分钟才能在整个订阅者表中循环并发送150多封电子邮件.(由于大量的电子邮件策略,电子邮件按照我们的电子邮件服务器的系统管理员的要求单独发送.)
在此期间,发布提醒的个人将在表格的最后一页上停留近一分钟而没有任何正面强化他们的通知被发布.这导致了其他潜在的问题,所有这些问题都有可能我认为不太理想的解决方案.
首先,海报可能认为服务器滞后并再次单击"提交"按钮,导致脚本重新开始或运行两次.我可以通过使用JavaScript来禁用按钮并将文本替换为"正在处理..."之类的内容来解决这个问题,但这并不理想,因为用户在脚本执行的长度上仍会卡在页面上.(另外,如果禁用JavaScript,则此问题仍然存在.)
其次,海报可能会在提交表单后过早关闭标签页或浏览器.该脚本将继续在服务器上运行,直到它尝试写回浏览器,但是如果用户随后浏览到我们域中的任何页面(当脚本仍在运行时),则浏览器会挂起加载页面,直到脚本结束.(仅当浏览器的选项卡或窗口关闭而不是整个浏览器应用程序时才会发生这种情况.)但这仍然不太理想.
(可能)解决方案
我已经决定将脚本的"电子邮件"部分分解为一个单独的文件,我可以在发布通知后调用它.我最初想到在通知成功发布后将其放在确认页面上.但是,用户不会知道此脚本正在运行,并且任何异常都不会对他们显而易见; 这个脚本不会失败.
但是,如果我可以将此脚本作为后台进程运行,该怎么办?所以,我的问题是:我如何执行PHP脚本作为后台服务触发并完全独立于用户在表单级别完成的操作?
编辑:这不能是cron'ed.它必须在提交表单的瞬间运行.这些是高优先级通知.此外,运行我们服务器的系统管理员不允许运行任何超过5分钟的crons.
我使用Amazon Linux实例,我有几个脚本来填充数据并安装我使用的所有程序,但是有几个程序要求:
Do you want to continue [Y/n]?
Run Code Online (Sandbox Code Playgroud)
并暂停安装.我想在所有情况下自动回答"Y",我现在才确定如何做到这一点.
我必须从批处理文件中调用PowerShell脚本.脚本的一个参数是布尔值:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -File .\RunScript.ps1 -Turn 1 -Unify $false
Run Code Online (Sandbox Code Playgroud)
该命令失败,并显示以下错误:
Cannot process argument transformation on parameter 'Unify'. Cannot convert value "System.String" to type "System.Boolean", parameters of this type only accept booleans or numbers, use $true, $false, 1 or 0 instead.
At line:0 char:1
+ <<<< <br/>
+ CategoryInfo : InvalidData: (:) [RunScript.ps1], ParentContainsErrorRecordException <br/>
+ FullyQualifiedErrorId : ParameterArgumentTransformationError,RunScript.ps1
Run Code Online (Sandbox Code Playgroud)
截至目前,我在我的脚本中使用字符串进行布尔转换.但是如何将布尔参数传递给PowerShell?
我想从dir中复制所有文件,除了一个名为Default.png的文件.似乎有很多方法可以做到这一点.对你来说最有效的是什么?
我有一个简单的脚本blah.py(使用Python 2):
import sys
print sys.argv[1]
Run Code Online (Sandbox Code Playgroud)
如果我执行我的脚本:
python c:/..../blah.py argument
Run Code Online (Sandbox Code Playgroud)
它打印参数,但如果我执行脚本:
blah.py argument
Run Code Online (Sandbox Code Playgroud)
发生错误:
IndexError ...
所以参数不会传递给脚本.
PATH中的python.exe.blah.py的文件夹也在PATH中.
python.exe是执行*.py文件的默认程序.
问题是什么?
我在Python中有一个实用程序脚本:
#!/usr/bin/env python
import sys
unique_lines = []
duplicate_lines = []
for line in sys.stdin:
if line in unique_lines:
duplicate_lines.append(line)
else:
unique_lines.append(line)
sys.stdout.write(line)
# optionally do something with duplicate_lines
Run Code Online (Sandbox Code Playgroud)
这个简单的功能(uniq无需先排序,稳定排序)必须作为简单的UNIX实用程序提供,不是吗?也许是管道中过滤器的组合?
询问的原因:在我无法从任何地方执行python的系统上需要此功能
我想要一个可以将任意通用脚本或命令转换为守护进程的守护进程.
我想要处理两种常见情况:
我有一个应该永远运行的脚本.如果它死了(或重启),重新启动它.不要让一次运行两个副本(检测副本是否已经在运行并且在这种情况下不启动它).
我有一个简单的脚本或命令行命令,我希望永远重复执行(运行之间的短暂停顿).同样,不要允许一次运行两个脚本副本.
当然,在案例2中围绕脚本编写"while(true)"循环然后为案例1应用解决方案是微不足道的,但更通用的解决方案将直接解决案例2,因为它适用于案例1中的脚本好(你可能只是想更短或没有停顿如果脚本不打算会死(当然,如果剧本真的没有永远不死,则暂停实际上并不重要)).
请注意,解决方案不应涉及将文件锁定代码或PID记录添加到现有脚本中.
更具体地说,我想要一个程序"daemonize",我可以运行
% daemonize myscript arg1 arg2
Run Code Online (Sandbox Code Playgroud)
或者,例如,
% daemonize 'echo `date` >> /tmp/times.txt'
Run Code Online (Sandbox Code Playgroud)
这将保留越来越多的日期列表附加到times.txt.(注意,如果daemonize的参数是一个永远运行的脚本,如上面的情况1那样,那么daemonize仍然会做正确的事情,必要时重新启动它.)然后我可以在我的.login中输入如上所示的命令和/或每小时或每小时一次(取决于我是多么担心它会意外死亡).
注意:daemonize脚本需要记住它正在守护的命令字符串,这样如果再次守护同一个命令字符串,它就不会启动第二个副本.
此外,理想情况下,该解决方案应该适用于OS X和Linux,但欢迎使用其中一种解决方案.
编辑:如果你必须调用它,这很好sudo daemonize myscript myargs.
(如果我认为这一切都错了,或者有快速和肮脏的局部解决方案,我也很乐意听到.)
PS:如果它有用,这里是一个特定于python的类似问题.
而这个回答类似的问题有什么似乎是一个任意脚本的快速和肮脏的妖魔化一个有用的成语: