◆- Adobe插件与脚本区 主要讨论Adobe插件开发与软件脚本撰写

发表新主题 回复
 
只看楼主 主题工具
旧 2024-06-22, 11:14     #1
yzx0120 yzx0120 当前离线
正式会员
等级: 四袋长老
级别:42 | 在线时长:2020小时 | 升级还需:1小时级别:42 | 在线时长:2020小时 | 升级还需:1小时级别:42 | 在线时长:2020小时 | 升级还需:1小时级别:42 | 在线时长:2020小时 | 升级还需:1小时级别:42 | 在线时长:2020小时 | 升级还需:1小时级别:42 | 在线时长:2020小时 | 升级还需:1小时
 
Uid: 539522
注册日期: 2016-10-23, 14:13
年龄: 39
帖子: 352
感谢: 146
11 个帖子获得 17 次感谢
现金: 103金币
资产: 109金币
声望: 10 yzx0120 向着好的方向发展
yzx0120 yzx0120 当前离线
正式会员
等级: 四袋长老
级别:42 | 在线时长:2020小时 | 升级还需:1小时级别:42 | 在线时长:2020小时 | 升级还需:1小时级别:42 | 在线时长:2020小时 | 升级还需:1小时级别:42 | 在线时长:2020小时 | 升级还需:1小时级别:42 | 在线时长:2020小时 | 升级还需:1小时级别:42 | 在线时长:2020小时 | 升级还需:1小时
 
Uid: 539522
注册日期: 2016-10-23, 14:13
年龄: 39
帖子: 352
感谢: 146
11 个帖子获得 17 次感谢
现金: 103金币
资产: 109金币
声望: 10 yzx0120 向着好的方向发展
默认 求助大神上面有8个字符串,用AI脚本比较最大   



VAR M1=WX N004 191059G
VAR M2=WX N003 191059G
VAR M3=WX N005 191059G
VAR M4=WX N017 191059G
VAR M5=WX N025 191059G
VAR M6=WX N030 191059G
VAR M7=WX N100 191059G
VAR M8=WX N236 191059G
求助大神上面有8个字符串,用AI脚本比较,比较字符串第一个空格与第二个空格间的字符,用N接收他们数字部分最大的字符串,N1接收字符串所在名称
上面 脚本运行,结果N=236 N1=WX N236 191059G
yzx0120 当前离线   回复时引用此帖回复时引用此帖
旧 2024-06-24, 15:50   只看该作者   #2
yzx0120 yzx0120 当前离线
正式会员
等级: 四袋长老
级别:42 | 在线时长:2020小时 | 升级还需:1小时级别:42 | 在线时长:2020小时 | 升级还需:1小时级别:42 | 在线时长:2020小时 | 升级还需:1小时级别:42 | 在线时长:2020小时 | 升级还需:1小时级别:42 | 在线时长:2020小时 | 升级还需:1小时级别:42 | 在线时长:2020小时 | 升级还需:1小时
 
Uid: 539522
注册日期: 2016-10-23, 14:13
年龄: 39
帖子: 352
感谢: 146
11 个帖子获得 17 次感谢
现金: 103金币
资产: 109金币
声望: 10 yzx0120 向着好的方向发展
yzx0120 yzx0120 当前离线
正式会员
等级: 四袋长老
级别:42 | 在线时长:2020小时 | 升级还需:1小时级别:42 | 在线时长:2020小时 | 升级还需:1小时级别:42 | 在线时长:2020小时 | 升级还需:1小时级别:42 | 在线时长:2020小时 | 升级还需:1小时级别:42 | 在线时长:2020小时 | 升级还需:1小时级别:42 | 在线时长:2020小时 | 升级还需:1小时
 
Uid: 539522
注册日期: 2016-10-23, 14:13
年龄: 39
帖子: 352
感谢: 146
11 个帖子获得 17 次感谢
现金: 103金币
资产: 109金币
声望: 10 yzx0120 向着好的方向发展
默认

引用:
作者: yzx0120 查看帖子
VAR M1=WX N004 191059G
VAR M2=WX N003 191059G
VAR M3=WX N005 191059G
VAR M4=WX N017 191059G
VAR M5=WX N025 191059G
VAR M6=WX N030 191059G
VAR M7=WX N100 191059G
VAR M8=WX N236 191059G
求助大神上面有8个字符串,用AI脚本比较,比较字符串第一个空格与第二个空格间的字符,用N接收他们数字部分最大的字符串,N1接收字符串所在名称
上面 脚本运行,结果N=236 N1=WX N236 191...
WX 天N004 191059G
WX 天N003 191059G
WX 天N005 191059G
WX 天N017 191059G
WX 天N025 191059G
WX 天N030 191059G
WX 天N100 191059G
WX 天N236 191059G
如果E:/NN这里有上面这8个是文件
var doc=app.activeDocument;
var folderPath = "E:/NN/";

var cityNames = ["天"];
//alert(cityNames);
var Maximum;
var result = checkFilesInFolder(folderPath, cityNames);
alert(result);
function checkFilesInFolder(folderPath, cityNames) {
var folder = new Folder(folderPath);
var files = folder.getFiles();
for (var i = 0; i < files.length; i++) {
var file = files[i];
var fileName = file.fullName;

for (var j = 0; j < cityNames.length; j++) {
var cityName = cityNames[j];
if (fileName.indexOf("天") !== -1) {


var Modesecond=fileName.split(" ").slice(1,2);
var Maximum=Maximum >=Modesecond ? Maximum : Modesecond;
alert(Maximum);

}

}

}

for (i = 0; i < files.length; i++) {
var subFolder = files[i];
if (subFolder instanceof Folder) {
var result = checkFilesInFolder(subFolder.absoluteURI, cityNames);
if (result === Maximum) {
return Maximum;
}
}
}

return 0;
}
我预期的结果是函数返回值="天N236",但上面的代码函数内部测试值Maximum是对的,但返回值不对,求大神指点一下。
yzx0120 当前离线   回复时引用此帖回复时引用此帖
旧 2024-06-25, 13:11   只看该作者   #3
ssomer ssomer 当前离线
正式会员
等级: 二袋长老
级别:27 | 在线时长:883小时 | 升级还需:13小时级别:27 | 在线时长:883小时 | 升级还需:13小时级别:27 | 在线时长:883小时 | 升级还需:13小时级别:27 | 在线时长:883小时 | 升级还需:13小时级别:27 | 在线时长:883小时 | 升级还需:13小时级别:27 | 在线时长:883小时 | 升级还需:13小时
 
Uid: 727393
注册日期: 2023-04-02, 07:54
帖子: 66
感谢: 24
8 个帖子获得 15 次感谢
现金: 87金币
资产: 87金币
声望: 10 ssomer 向着好的方向发展
ssomer ssomer 当前离线
正式会员
等级: 二袋长老
级别:27 | 在线时长:883小时 | 升级还需:13小时级别:27 | 在线时长:883小时 | 升级还需:13小时级别:27 | 在线时长:883小时 | 升级还需:13小时级别:27 | 在线时长:883小时 | 升级还需:13小时级别:27 | 在线时长:883小时 | 升级还需:13小时级别:27 | 在线时长:883小时 | 升级还需:13小时
 
Uid: 727393
注册日期: 2023-04-02, 07:54
帖子: 66
感谢: 24
8 个帖子获得 15 次感谢
现金: 87金币
资产: 87金币
声望: 10 ssomer 向着好的方向发展
默认

有一个循环就可以了,不需要写三个。
ssomer 当前离线   回复时引用此帖回复时引用此帖
旧 2024-06-25, 14:33   只看该作者   #4
zhgx998@163.com zhgx998@163.com 当前在线
中级会员
等级: 六袋长老
级别:51 | 在线时长:2849小时 | 升级还需:63小时级别:51 | 在线时长:2849小时 | 升级还需:63小时级别:51 | 在线时长:2849小时 | 升级还需:63小时级别:51 | 在线时长:2849小时 | 升级还需:63小时级别:51 | 在线时长:2849小时 | 升级还需:63小时级别:51 | 在线时长:2849小时 | 升级还需:63小时
 
Uid: 484255
注册日期: 2015-11-02, 10:40
帖子: 1165
感谢: 194
101 个帖子获得 140 次感谢
现金: 759金币
资产: 759金币
声望: 10 zhgx998@163.com 向着好的方向发展
zhgx998@163.com zhgx998@163.com 当前在线
中级会员
等级: 六袋长老
级别:51 | 在线时长:2849小时 | 升级还需:63小时级别:51 | 在线时长:2849小时 | 升级还需:63小时级别:51 | 在线时长:2849小时 | 升级还需:63小时级别:51 | 在线时长:2849小时 | 升级还需:63小时级别:51 | 在线时长:2849小时 | 升级还需:63小时级别:51 | 在线时长:2849小时 | 升级还需:63小时
 
Uid: 484255
注册日期: 2015-11-02, 10:40
帖子: 1165
感谢: 194
101 个帖子获得 140 次感谢
现金: 759金币
资产: 759金币
声望: 10 zhgx998@163.com 向着好的方向发展
默认

帮你问了下AI,参考下。
你的代码有两个主要问题。
首先,你需要赋予Maximum一个初始值。在你入口函数checkFilesInFolder开始处,你需要赋值,比如var Maximum = -Infinity。这样,当你第一次进行比较的时候,你就有了一个开始的比较值。
然后,你期望函数返回的是整个字符串(如"天N236"),但Maximum在初始化和后续比较过程中,赋值的都是数字部分。所以,你在最后返回Maximum的时候,其实返回的是找到的最大的数字部分,而不是包含这个数字部分的整个字符串。
为了解决这个问题,我推荐同时存储数字部分以及对应的字符串。每次找到更大的数字部分的时候,同时更新存储的字符串。以下是我修改后的代码:
var doc = app.activeDocument;
var folderPath = "E:/NN/";
var cityName = "天";
var Maximum = -Infinity;
var MaxStr = "";

function checkFilesInFolder(folderPath, cityName) {
var folder = new Folder(folderPath);
var files = folder.getFiles();

for (var i = 0; i < files.length; i++) {
var file = files[i];
var fileName = file.name;

if (fileName.indexOf(cityName) !== -1) {

// 注意这里需要使用parseInt将字符串转为数字进行比较
var num = parseInt(fileName.split(" ")[1].slice(1));

// 判断是否需要更新
if(num > Maximum) {
Maximum = num;
MaxStr = fileName;
}
}
}

for (i = 0; i < files.length; i++) {
var subFolder = files[i];
if (subFolder instanceof Folder) {
checkFilesInFolder(subFolder.absoluteURI, cityName);
}
}
}

checkFilesInFolder(folderPath, cityName);
alert(MaxStr);
zhgx998@163.com 当前在线   回复时引用此帖回复时引用此帖
右列会员因为此帖价值甚高向 zhgx998@163.com 表示感谢:
yzx0120 (2024-06-25)
旧 2024-06-25, 22:14   只看该作者   #5
姜椒蒜 姜椒蒜 当前在线
中级会员
等级: 七袋长老
级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时
 
Uid: 699927
注册日期: 2020-12-20, 15:13
帖子: 3678
感谢: 656
337 个帖子获得 402 次感谢
现金: 18金币
资产: 7218金币
声望: 10 姜椒蒜 向着好的方向发展
姜椒蒜 姜椒蒜 当前在线
中级会员
等级: 七袋长老
级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时
 
Uid: 699927
注册日期: 2020-12-20, 15:13
帖子: 3678
感谢: 656
337 个帖子获得 402 次感谢
现金: 18金币
资产: 7218金币
声望: 10 姜椒蒜 向着好的方向发展
默认

我前两天就看到你这个帖子了,当时有个思路,但是我也是个菜鸟,自己写不出来
我的思路大致是这样的,把你上面的八个字符串归入一个数组,用正则表达式去匹配提取数字比较大小,这样N就出来了,再根据N所在的元素索引返回元素,N1就出来了
姜椒蒜 当前在线   回复时引用此帖回复时引用此帖
右列会员因为此帖价值甚高向 姜椒蒜 表示感谢:
yzx0120 (2024-06-25)
旧 2024-06-26, 00:51   只看该作者   #6
姜椒蒜 姜椒蒜 当前在线
中级会员
等级: 七袋长老
级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时
 
Uid: 699927
注册日期: 2020-12-20, 15:13
帖子: 3678
感谢: 656
337 个帖子获得 402 次感谢
现金: 18金币
资产: 7218金币
声望: 10 姜椒蒜 向着好的方向发展
姜椒蒜 姜椒蒜 当前在线
中级会员
等级: 七袋长老
级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时
 
Uid: 699927
注册日期: 2020-12-20, 15:13
帖子: 3678
感谢: 656
337 个帖子获得 402 次感谢
现金: 18金币
资产: 7218金币
声望: 10 姜椒蒜 向着好的方向发展
默认

引用:
作者: yzx0120 查看帖子
VAR M1=WX N004 191059G
VAR M2=WX N003 191059G
VAR M3=WX N005 191059G
VAR M4=WX N017 191059G
VAR M5=WX N025 191059G
VAR M6=WX N030 191059G
VAR M7=WX N100 191059G
VAR M8=WX N236 191059G
求助大神上面有8个字符串,用AI脚本比较,比较字符串第一个空格与第二个空格间的字符,用N接收他们数字部分最大的字符串,N1接收字符串所在名称
上面 脚本运行,结果N=236 N1=WX N236 191...
var strings = [
"WX N004 191059G",
"WX N003 191059G",
"WX N005 191059G",
"WX N017 191059G",
"WX N025 191059G",
"WX N030 191059G",
"WX N100 191059G",
"WX N236 191059G"
];

var maxNum = -Infinity;
var maxString = "";

for (var i = 0; i < strings.length; i++) {
var parts = strings[i].split(' ');
var num = parseInt(parts[1].substring(1));

if (num > maxNum) {
maxNum = num;
maxString = strings[i];
}
}

alert( maxNum + maxString);



试一下这个
姜椒蒜 当前在线   回复时引用此帖回复时引用此帖
右列 2 位会员因为此帖价值甚高向 姜椒蒜 表示感谢:
ssomer (2024-06-26), yzx0120 (2024-06-26)
旧 2024-06-26, 19:05   只看该作者   #7
姜椒蒜 姜椒蒜 当前在线
中级会员
等级: 七袋长老
级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时
 
Uid: 699927
注册日期: 2020-12-20, 15:13
帖子: 3678
感谢: 656
337 个帖子获得 402 次感谢
现金: 18金币
资产: 7218金币
声望: 10 姜椒蒜 向着好的方向发展
姜椒蒜 姜椒蒜 当前在线
中级会员
等级: 七袋长老
级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时级别:83 | 在线时长:7327小时 | 升级还需:65小时
 
Uid: 699927
注册日期: 2020-12-20, 15:13
帖子: 3678
感谢: 656
337 个帖子获得 402 次感谢
现金: 18金币
资产: 7218金币
声望: 10 姜椒蒜 向着好的方向发展
默认

引用:
作者: yzx0120 查看帖子
VAR M1=WX N004 191059G
VAR M2=WX N003 191059G
VAR M3=WX N005 191059G
VAR M4=WX N017 191059G
VAR M5=WX N025 191059G
VAR M6=WX N030 191059G
VAR M7=WX N100 191059G
VAR M8=WX N236 191059G
求助大神上面有8个字符串,用AI脚本比较,比较字符串第一个空格与第二个空格间的字符,用N接收他们数字部分最大的字符串,N1接收字符串所在名称
上面 脚本运行,结果N=236 N1=WX N236 191...

上面的代码这行修改成
alert( maxNum + "\r\n" + maxString);
这样得到的结果更直观
姜椒蒜 当前在线   回复时引用此帖回复时引用此帖
右列会员因为此帖价值甚高向 姜椒蒜 表示感谢:
yzx0120 (2024-06-28)
发表新主题 回复


发帖规则
不可以发表主题
不可以回复帖子
不可以上传附件
不可以编辑自己的帖子

论坛启用 vB 代码
论坛启用 表情图标
论坛启用 [IMG] 代码
论坛禁用 HTML 代码


律师声明:本站内容,均具有版权,未经书面授权,禁止转载,严禁镜像,违者承担一切后果!
论坛广告报价   广告联系及办理企业会员服务QQ:57880388 站务管理QQ:35529388


所有时间均为 +8, 现在的时间是 2025-01-01 20:18.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
 
Copyright © 2004-2022