Shell脚本(3)——JS宏的web接口

wils
wils

创作者俱乐部成员

有了前面的铺垫,下面就可以用httpd命令扩展JS宏了,可以通过web接口操作外部的文件。

今天再换一个脚本环境,在这里https://frippery.org/busybox/下载busybox.exe,只需要把这个600k的exe放到环境变量PATH里,比如这里C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps,就可以在cmd里使用100多个Shell命令了。

例1. 读取utf8编码的txt文本

👋

对于utf8编码的文本,直接在文本所在目录里,执行httpd命令,就开启了web接口,就可以在JS宏里,使用fetch获取文本的内容了

这一步可以在JS宏里通过shell函数执行httpd,甚至不用手动开启

例2. 读取GBK编码的txt文本

📌

对于gbk编码的文本,需要转编码为utf8,才能在JS宏里导入,否则中文会乱码

需要在执行httpd命令的目录里,创建cgi-bin文件夹,这个文件夹里的脚本可以通过web请求执行,并获得结果

所以在这里写了一个gbk.sh脚本

其中第一行是说明这是Shell脚本,可以改成python、node等其他脚本

第二行是返回的头部,这里只是设置了返回的编码是utf8

第三行是iconv转编码

之后,在JS宏里访问cgi-bin/gbk.sh,就可以得到转码后的文本内容了

例3. 获取pdf的文本内容

📌

对于pdf,可以用xpdf项目提供的,pdftotext命令获取文本内容

所以同上,只需要在cgi-bin文件夹里,建立pdf.sh脚本

前两行不变

第三行变成pdftotext转pdf为txt

之后,就可以在JS宏里,访问cgi-bin/pdf.sh,获取pdf的文本内容

例4. 写入a.txt文本

🔔

只需要在cgi-bin文件夹里,新建out.sh脚本

前两行不变

第三行,用cat命令,重定向输入的内容到../a.txt文件里

第四行,返回ok

就可以在JS宏里,发送POST请求到cgi-bin/out.sh,就可以把请求的body写入文本

如果需要存为gbk文件,只需要把第三行的cat改成iconv命令即可

从上面的例子可以看出,只需要写很少的Shell命令,就可以通过httpd命令开启web接口,JS宏里只需要fetch发送请求,就可以操作读写外部的文件

广东省
浏览 763
1
7
分享
7 +1
7
1 +1
全部评论 7
 
星垂平野阔
你好,请教一下在linux系统下要怎么使用这个功能。
· 福建省
回复
wils
wils

创作者俱乐部成员

在uos统信这类基于debian的系统里,busybox是自带的,不用安装什么,可以开httpd 但问题是,你用的如果是个人版wps,就只能写wpsjs加载项来用这个web接口 如果用的是专业版wps,且升级到最新,那么可以在linux的JS宏里用fetch调用这个web接口
· 广东省
回复
 
方盛
方盛

创作者俱乐部成员

通俗易懂
· 湖北省
回复
 
吴林
很棒的帖子,通俗易懂
· 广东省
回复
 
yi
yi

创作者俱乐部成员

太牛了
· 江西省
回复
 
uibpqds
大佬
· 河南省
回复