Quicker
主页
下载
2.0
专业版
分享
动作库
子程序
扩展热键
文本指令
动作单
应用程序
文档
文档中心首页
软件使用手册
组合动作开发
知识库
版本更新
版本更新(归档)
异常反馈
讨论
外观
登录
注册
动作库
动作
规范文件命名
讨论
话题详情
jsonn输入内容为空
BUG反馈
·
1532 次浏览
nga
创建于 2022-01-17 18:12
在两台电脑里都安装了,都没法用,提示这个,请问是什么问题?
添加评论
回复
请绑定手机号后发表评论
回复内容
淳帅二代
2022-01-17 20:13
#
1
报错 - Quicker (getquicker.net)
回复
nga
2022-01-18 08:11
:
已贴调试运行记录,有解决方法吗
回复
请绑定手机号后发表评论
nga
2022-01-18 08:10
#
2
折叠全部
展开全部
6
Win-10.0.19044.0 Quicker-1.28.18.0 动作ID:404b9045-a07f-44db-83b7-b862045b979a 来源动作:fac14427-c0f5-4567-c945-08d99706f10d v4
8
Log文件路径:C:\Users\Y\AppData\Local\Temp\quicker_规范文件命名_080728-079_log.htm
在资源管理器中查看
复制文件
8
开始执行动作:规范文件命名 2022-01-18 08:07:28
9
动作初始化
11
0
生成临时文件路径
生成脚本文件
[in]
扩展名
【值/表达式】
.py
[out]
文件路径=>临时Python脚本位置
C:\Users\Y\AppData\Local\Temp\quicker_8d9aef75-c418-4749-8a2c-7f8d503459b3.py
15
1
写入文本文件
将脚本内容写入py文件
[in]
失败后停止
【值/表达式】
True
[in]
文件路径
【变量 临时Python脚本位置】
C:\Users\Y\AppData\Local\Temp\quicker_8d9aef75-c418-4749-8a2c-7f8d503459b3.py
[in]
内容
【值/表达式】
import sys\r\n
import re\r\n
from datetime import datetime\r\n
from os import path\r\n
import json\r\n
from pprint import pprint\r\n
\r\n
输入文件 = sys.argv[1]\r\n
# 输入文件 = r"D:/(20210512-091500)大类-大类2-标题(v1.1.1)#标签1#标签2@人物1@人物2=&评论.jpg"\r\n
# 输入文件 = r"D:/(2021-05-12)大类-大类2-标题(v1.1.1)#标签1#标签2@人物1@人物2=&评论.jpg"\r\n
# 输入文件 = r"D:/img(2021-05)大类-大类2-标题(v1.1.1)#标签1#标签2@人物1@人物2=&评论.jpg"\r\n
# 输入文件 = r"1111标题(v1.1.1.beta)#标签1#标签2@人物1@人物2&评论.jpg"\r\n
# 输入文件 = r"20211025-102501__OPPO-Giant__Proj1.S1.Rn4D.4k60.sLog3__BTS__Li.mov"\r\n
# 输入文件 = r"d:/mmexport1111416781651.mov"\r\n
# 输入文件 = r"20211025-102501__Proj1.S1.Rn4D.4k60.sLog3__Li.mov"\r\n
# 输入文件 = r"2021-10-25__Proj1.S1.Rn4D.4k60.sLog3.mov"\r\n
文件名 = path.basename(输入文件) \r\n
文件名无后缀 = path.splitext(文件名)[0] if path.isfile(输入文件) else 文件名\r\n
\r\n
\r\n
def 解析严格标准名字(文件无后缀名字):\r\n
'''\r\n
由于块间分隔符相同,无法分辨出哪个是标签,哪个是人物,只能返回李模糊匹配的字典:\r\n
{\r\n
'文本块': ['前缀', '标题', '标签', '人物', '评论'],\r\n
'时间': datetime.datetime(2021, 10, 25, 10, 25, 1),\r\n
'版本': ''\r\n
}\r\n
'''\r\n
\r\n
组1 = f'(?:[^\d]*)[^\d]?[\d\-_]*\)?' # 时间\r\n
组2 = r'[^_]+_*' # 前缀\r\n
组3 = r'[^_]+_*' # 标题\r\n
组4 = r'v[^_]+_*' # 版本\r\n
组5 = r'[^_]+_*' # 标签\r\n
组6 = r'[^_]+_*' # 人物\r\n
组7 = r'[^_]+_*' # 评论\r\n
\r\n
标准名字匹配结果 = re.match(\r\n
f'({组1})?({组2})?({组3})?({组4})?({组5})?({组6})?({组7})?', 文件无后缀名字)\r\n
\r\n
非时间数据块列表 = [标准名字匹配结果.group(i).strip('_') \\r\n
for i in [2, 3, 5, 6, 7] \\r\n
if 标准名字匹配结果.group(i)]\r\n
\r\n
时间 = 从字符串得到时间(标准名字匹配结果.group(1)) if 标准名字匹配结果.group(1) else ''\r\n
版本 = 标准名字匹配结果.group(4) if 标准名字匹配结果.group(4) else ''\r\n
\r\n
结果 = {'时间': 时间, '版本': 版本, '文本块': 非时间数据块列表}\r\n
\r\n
return 结果\r\n
\r\n
def 解析宽松标准名字(文件无后缀名字):\r\n
\r\n
组1 = '(?:[^\d]*)[^\d]?[\d\-_]{4,}\)?' # 时间\r\n
组2 = r'[^\(#@&]+-' # 前缀\r\n
组3 = r'[^\(#@&]+' # 标题\r\n
组4 = r'\([^#@&]+\)' # 版本\r\n
组5 = r'#[^@&]+' # 标签\r\n
组6 = r'@[^&]+' # 人物\r\n
组7 = r'&.+' # 评论\r\n
\r\n
标准名字匹配结果 = re.match(\r\n
f'({组1})?({组2})?({组3})?({组4})?({组5})?({组6})?({组7})?', 文件无后缀名字)\r\n
\r\n
时间 = 标准名字匹配结果.group(1) if 标准名字匹配结果.group(1) else ''\r\n
前缀 = 标准名字匹配结果.group(2) if 标准名字匹配结果.group(2) else ''\r\n
标题 = 标准名字匹配结果.group(3) if 标准名字匹配结果.group(3) else ''\r\n
版本 = 标准名字匹配结果.group(4) if 标准名字匹配结果.group(4) else ''\r\n
标签 = 标准名字匹配结果.group(5) if 标准名字匹配结果.group(5) else ''\r\n
人物 = 标准名字匹配结果.group(6) if 标准名字匹配结果.group(6) else ''\r\n
评论 = 标准名字匹配结果.group(7) if 标准名字匹配结果.group(7) else ''\r\n
\r\n
时间 = 从字符串得到时间(时间)\r\n
时间 = 时间 if 时间 else ''\r\n
前缀 = 前缀.strip('-')\r\n
版本 = 版本.strip('()')\r\n
标签 = 标签.replace('#', '\r\n#').lstrip()\r\n
人物 = 人物.replace('@', '\r\n@').lstrip()\r\n
评论 = 评论.replace('&', '\r\n').lstrip()\r\n
\r\n
if not 时间 and not 前缀 and not 版本 and not 标签 and not 人物 and not 评论:\r\n
标题 = 文件无后缀名字\r\n
\r\n
结果 = {'文件名时间': 时间, \r\n
'前缀': 前缀, '标题': 标题, \r\n
'版本': 版本, \r\n
'标签': 标签, '人物': 人物, '评论': 评论}\r\n
\r\n
return 结果\r\n
\r\n
def 从字符串得到时间(字符串):\r\n
全数字 = ''.join(re.findall(r'\d+', 字符串))\r\n
当前时间 = datetime.now()\r\n
\r\n
try:\r\n
# 年月日时分秒\r\n
时间 = datetime.fromisoformat(\r\n
f'{全数字[0:4]}-{全数字[4:6]}-{全数字[6:8]} {全数字[8:10]}:{全数字[10:12]}:{全数字[12:14]}'\r\n
)\r\n
return f'{时间.year}{时间.month}{时间.day}-{时间.hour}{时间.minute}{时间.second}'\r\n
except:\r\n
...\r\n
try:\r\n
# 年月日\r\n
if len(全数字) == 8:\r\n
时间 = datetime.fromisoformat(\r\n
f'{全数字[0:4]}-{全数字[4:6]}-{全数字[6:8]} 00:00:00'\r\n
)\r\n
return f'{时间.year}-{时间.month}-{时间.day}'\r\n
except:\r\n
...\r\n
try:\r\n
# 年月\r\n
if len(全数字) == 6:\r\n
时间 = datetime.fromisoformat(\r\n
f'{全数字[0:4]}-{全数字[4:6]}-01 00:00:00'\r\n
)\r\n
return f'{时间.year}-{时间.month}'\r\n
except:\r\n
...\r\n
try:\r\n
# 年\r\n
if len(全数字) == 4:\r\n
时间 = datetime.fromisoformat(\r\n
f'{全数字[0:4]}-01-01 00:00:00'\r\n
)\r\n
return f'{时间.year}'\r\n
except:\r\n
...\r\n
\r\n
\r\n
try:\r\n
# 类似 mmexport1111467816512.jpg\r\n
if re.match(r'.*[^\d]?(\d{13})([^\d]+)?', 文件名):\r\n
时间 = datetime.fromtimestamp(\r\n
int(全数字[0:13]) / 1000\r\n
)\r\n
return f'{时间.year}{时间.month}{时间.day}-{时间.hour}{时间.minute}{时间.second}'\r\n
except:\r\n
...\r\n
\r\n
try:\r\n
# 类似 121301190818c8f0c7010755.mp4\r\n
时间 = datetime.fromisoformat(\r\n
f'20{全数字[10:12]}-{全数字[8:10]}-{全数字[6:8]} {全数字[4:6]}:{全数字[2:4]}:{全数字[0:2]}').timestamp()\r\n
return f'{时间.year}{时间.month}{时间.day}-{时间.hour}{时间.minute}{时间.second}'\r\n
except:\r\n
...\r\n
\r\n
return False\r\n
\r\n
if __name__ == '__main__':\r\n
\r\n
# 结果 = 解析严格标准名字(文件名无后缀)\r\n
结果 = 解析宽松标准名字(文件名无后缀)\r\n
\r\n
结果 = json.dumps(结果, ensure_ascii=True)\r\n
\r\n
print(结果)\r\n
[in]
文件编码
【值/表达式】
utf-8
[in]
添加到文件末尾
【值/表达式】
False
[in]
添加空行
【值/表达式】
False
[in]
添加UTF-BOM
【值/表达式】
False
19
2
获取剪贴板文本
=> {剪切板内容}
[in]
失败后中止动作
【值/表达式】
False
[in]
文本数据格式
【值/表达式】
UnicodeText
[out]
结果内容=>剪切板内容
https://getquicker.net/Sharedaction?code=fac14427-c0f5-4567-c945-08d99706f10d
19
3
获取选中的文件(夹)
获取所选所有文件
[in]
失败后中止动作
【值/表达式】
True
[in]
排序文件列表
【无输入】
Default
35
通过Win32接口获得的文件数量为0,尝试Ctrl+C选择
147
通过Ctrl+c获得了1个文件
[out]
路径列表=>路径列表
0:C:\Users\Y\Desktop\混改-德勤.pdf
149
4
如果
判断条件:$={剪切板内容} != ''
[in]
如果
【值/表达式】
True
153
执行 True 分支, 共 1 步骤
155
4.0
写入剪贴板
自动(纯文本或图片) => 剪贴板
[in]
失败后停止
【值/表达式】
False
[in]
类型
【值/表达式】
auto
[in]
输入
【变量 剪切板内容】
https://getquicker.net/Sharedaction?code=fac14427-c0f5-4567-c945-08d99706f10d
155
写入文本类型。
[in]
输入
【变量 剪切板内容】
https://getquicker.net/Sharedaction?code=fac14427-c0f5-4567-c945-08d99706f10d
[in]
成功后提示
【值/表达式】
217
5
重复
对每一个文件都进行命名
[in]
次数
【值/表达式】
1
[in]
计数开始值
【值/表达式】
0
[in]
循环间隔时间
【值/表达式】
1
218
第 0 次循环
[out]
计数=>循环次数
0
218
5.0
检查路径/获取文件信息
检查路径是否存在、是不是文件
[in]
路径
【值/表达式】
C:\Users\Y\Desktop\混改-德勤.pdf
[out]
路径是否存在=>路径是否存在
True
[out]
是否为文件=>是否为文件
True
219
5.1
如果
要是获得的路径不存在,就进行下一步
[in]
如果
【值/表达式】
False
220
不符合条件,跳过。
220
5.2
如果/否则
判断条件:$={是否为文件}
[in]
如果
【值/表达式】
True
220
执行 True 分支, 共 1 步骤
220
5.2.0
提取文件路径信息
得到所在目录、扩展名
[in]
失败后停止
【值/表达式】
True
[in]
完整路径
【值/表达式】
C:\Users\Y\Desktop\混改-德勤.pdf
[out]
所在文件夹路径=>文件所在目录
C:\Users\Y\Desktop
[out]
扩展名=>文件扩展名
.pdf
220
5.3
运行脚本
使用Python对文件名进行正则匹配解析
[in]
脚本内容
【值/表达式】
python "C:\Users\Y\AppData\Local\Temp\quicker_8d9aef75-c418-4749-8a2c-7f8d503459b3.py" "C:\Users\Y\Desktop\混改-德勤.pdf"
[in]
脚本类型
【值/表达式】
CMD_K
[in]
扩展名
【无输入】
[in]
使用指定软件
【无输入】
[in]
命令行参数模板
【无输入】
%FILE%
[in]
以管理员身份运行
【值/表达式】
False
[in]
等待进程结束
【值/表达式】
True
[in]
文件编码
【值/表达式】
utf-8
[in]
工作目录
【值/表达式】
[in]
控制台输出编码
【值/表达式】
oem
[out]
控制台输出=>Python脚本输出
592
5.4
如果
判断条件:$={Python脚本输出}.StartsWith('Python')
[in]
如果
【值/表达式】
False
593
不符合条件,跳过。
593
5.5
提取JSON内容
$={Python脚本输出} => {时间} {前缀} {标题}...
[in]
失败后停止
【值/表达式】
True
[in]
输入
【值/表达式】
594
步骤(sys:jsonExtract)执行失败,原因:JSON输入内容为空。
600
停止动作:JSON输入内容为空。
600
检测到了中止标志(OperationFailed),停止后续步骤执行。
600
检测到了中止标志(OperationFailed),停止后续步骤执行。
600
动作结束
回复
回复
请绑定手机号后发表评论
回复主贴
相关资源
已复制到剪贴板,请在Quicker面板的空白按钮上点右键粘贴。
已复制到剪贴板。