Quicker
主页
下载
专业版
分享
动作库
子程序
扩展热键
文本指令
动作单
应用程序
文档
文档中心首页
软件使用手册
组合动作开发
知识库
版本更新
版本更新(归档)
异常反馈
讨论
外观
登录
注册
动作库
动作
规范文件命名
讨论
话题详情
jsonn输入内容为空
BUG反馈
·
649 次浏览
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面板的空白按钮上点右键粘贴。
已复制到剪贴板。