PHP 是最好的语言,但是……
很久之前,我就说了,PHP是最好的语言,是宇宙中最好的语言,因为方便啊,PHP有几千个估计得上万个函数了: http://php.net/manual/en/indexes.functions.php
所以,生活工作上,我也会拿PHP来写些命令行的脚本,比如这个
<?php
if ($argc < 2) {
die();
}
if (!is_file($argv[1])) {
die();
}
$offset = $argv[2] ?? 0;
// Search and Replace using Regular Expression with Arithmetic Evaluation
echo preg_replace_callback(
'~\<z\>(.*)\</z\>~i', // pattern for Z coordinate
function ($matches) {
global $offset;
return "<z>".($matches[1] + $offset)."</Z>";
},
file_get_contents($argv[1])
);
目的是用来把一个XML中 所有 <Z></Z>
标签的数值给改变一个偏移。 命令行里这么用:
php shift.php data.xml 1.0 > new_data.xml
我自己平时需要当然觉得超级好用,碰巧今天公司的一个 support engineer 在客户的机器上也需要做这一件事情 - 因为软件还不支持这个功能,只能暂时这样帮助客户来实现 work-around。
这个 support engineer 不知道啥是PHP,也无法在客户的机器上安装程序(但可以下载PHP移动版)。想来想去,为了运行上面的PHP脚本特意去下载一大包PHP运行库也不是很友好,于是只能把上面的脚本给翻译成 WINDOWS 支持的VBS。
Option Explicit
Dim args
Set args = Wscript.Arguments
If args.Count < 2 Then
WScript.Echo "First Parameter: BSM Path. Second Parameter: Z Offset."
WScript.Quit
End If
Dim fs
Set fs = CreateObject("Scripting.FileSystemObject")
Dim bsm: bsm = args(0)
Dim offset: offset = args(1)
If Not IsNumeric(offset) Then
WScript.Echo "Second Parameter: Not a Number"
WScript.Quit
End If
offset = CDbl(offset)
If Not fs.FileExists(bsm) Then
WScript.Echo "File Not Found: " & bsm
WScript.Quit
End If
Dim text
Set text = fs.OpenTextFile(bsm, 1)
Dim objRegEx
Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.Global = True
objRegEx.IgnoreCase = True
objRegEx.Pattern = "<Z\>(.*)\</Z\>"
Dim s, matches
Do Until text.AtEndOfStream
s = text.ReadLine
Set matches = objRegEx.Execute(s)
If matches.Count > 0 Then
WScript.Echo "<Z>" & matches.Item(0).SubMatches.Item(0) + offset & "</Z>"
Else
WScript.Echo s
End If
Loop
text.Close
Set text = Nothing
Set fs = Nothing
Set args = Nothing
Set objRegEx = Nothing
看吧,PHP几行就能安排的明明白白的事情在VBS上就得啰哩啰嗦的写个几十行。不过VBS的好处就是所有WINDOWS版本都支持,发过去,客户只需要按照说明在命令行里敲入命令即可跑VBS了。
刚刚同步到博文: https://justyy.com/archives/6414
支持我的工作 支持我成为 见证人
- 请在 这里 投我一票, 或者
- 设置我 为代理.
谢谢您! 我的贡献:SteemIt 工具、API接口、机器人和教程
股东工具
请注意:每次代理都是以最后一次输入的SP数量为标准,比如已经代理10 SP,想多代理5 SP则需要输入 最后的数字 15 SP(而不是 5!)
@justyy, 这就是文章该有的气质!
@justyy, 棒棒哒~~~![img](https://steemitimages.com/640x0/https://i.imgur.com/oLqiwr7.png)
BTW, @cn-naughty.boy 淘气包,来,给MM来一点[还我漂漂拳]嘛,嘻嘻...
PHP是最好的语言!😂
很对,没毛病