找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 11287|回复: 9

[其他] 【已解决】bat能够判断剪切板上的内容是不是网址吗?谢谢

[复制链接]
发表于 2025-3-12 12:14:04 | 显示全部楼层 |阅读模式
本帖最后由 yyz219 于 2025-3-12 20:00 编辑

完美解决了
  1. <!-- :
  2. @echo off &(for /f %%v in ('mshta "%~f0" ') do echo,%%v) &pause&exit/b
  3. -->
  4. <script> resizeTo(0,1); u=clipboardData.getData('text');
  5. p=/^((http|https|ftp):\/\/)((?:[\w-]+\.)+[a-z0-9]+)((?:\/[^/?#]*)+)?(\?[^#]+)?(#.+)?$/i;
  6. v=(u && p.test(u.replace(/"/ig,'')))? 1: -1;
  7. new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(v); close(); </script>
复制代码
=============================
原来的问题:
bat能够判断剪切板上的内容是不是网址吗?谢谢

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2025-3-12 13:46:50 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-3-12 13:49 编辑

回复 1# yyz219

正则判断网址有效性的版本繁多,准确度参差不一,先择其一个简版...
另》获取剪贴板文本内容常见的还有 mshta 版本,但其会导致闪屏,故还是选用了 jscript 方法,参考返回值=1(有效)-1(无效)
以下代码存为 test.bat 运行

  1. 2>1/* ::
  2. @echo off &for /f "delims=" %%s in ('cscript /e:jscript "%~f0" ') do echo,%%s
  3. pause&exit/b */
  4. h=WSH.createobject('htmlfile'), u=h.parentWindow.clipboardData.getData('text');
  5. p=/^(?:(http|https|ftp):\/\/)?((?:[\w-]+\.)+[a-z0-9]+)((?:\/[^/?#]*)+)?(\?[^#]+)?(#.+)?$/i;
  6. v=(u && p.test(u.replace('"','')))? 1: -1
  7. WSH.echo(v),WSH.quit();
复制代码

评分

参与人数 1技术 +1 收起 理由
yyz219 + 1 乐于助人

查看全部评分

 楼主| 发表于 2025-3-12 13:51:09 | 显示全部楼层
回复 2# aloha20200628


    我慢慢琢磨,谢谢
发表于 2025-3-12 16:47:55 | 显示全部楼层
回复 3# yyz219

如果要将没有协议前缀的网址如 www.abc.com 列入无效,则可用以下代码替换一楼代码第5行

  1. p=/^((http|https|ftp):\/\/)((?:[\w-]+\.)+[a-z0-9]+)((?:\/[^/?#]*)+)?(\?[^#]+)?(#.+)?$/i;
复制代码

评分

参与人数 1技术 +1 收起 理由
yyz219 + 1 乐于助人

查看全部评分

 楼主| 发表于 2025-3-12 17:41:21 | 显示全部楼层
回复 4# aloha20200628


    我慢慢琢磨 非常感谢
 楼主| 发表于 2025-3-12 18:14:18 | 显示全部楼层
本帖最后由 yyz219 于 2025-3-12 18:17 编辑

回复 2# aloha20200628


    windows7 下(正常系统)-----------------成功

    10 PE下----------------------------------不成功(可能没有 jscript 环境)

     有办法使得 10 PE下 也成功吗?谢谢
========================================
10 PE下 提示:
D:\桌面\Desktop\!!!\000.bat(4, 1) WScript.CreateObject: 无法找到名为“htmlfile”的 automation 类。

Microsoft (R) Windows Script Host Version 5.812
版权所有(C) Microsoft Corporation。保留所有权利。
请按任意键继续. . .
发表于 2025-3-12 19:22:07 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-3-12 19:37 编辑

回复 6# yyz219

试试以下的 mshta 版本,存为 test.bat 运行...

  1. <!-- :
  2. @echo off &(for /f %%v in ('mshta "%~f0" ') do echo,%%v) &pause&exit/b
  3. -->
  4. <script> resizeTo(0,1); u=clipboardData.getData('text');
  5. p=/^((http|https|ftp):\/\/)((?:[\w-]+\.)+[a-z0-9]+)((?:\/[^/?#]*)+)?(\?[^#]+)?(#.+)?$/i;
  6. v=(u && p.test(u.replace(/"/ig,'')))? 1: -1;
  7. new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(v); close(); </script>
复制代码

评分

参与人数 1技术 +1 收起 理由
yyz219 + 1 乐于助人

查看全部评分

 楼主| 发表于 2025-3-12 19:56:46 | 显示全部楼层
回复 7# aloha20200628


    非常感谢 这个PE 也可以
发表于 2025-3-12 20:08:44 | 显示全部楼层
htmlfile是 ie 相关的组件 ,请确保组件齐全 ,某些系统下而且可能需要ie设置里允许ActiveX才能new出来
pe下如果没有ps没有net没有ie ,基本上只能用第三方获取粘贴板数据了
htmlfile不行可以试试mshta(也是需要ie的) ,简单的判断了下

  1. mshta "javascript:with(new ActiveXObject('Scripting.FileSystemObject')){GetStandardStream(1).Write(clipboardData.getData('text').match(/^((ht|f)tps?):\/\//)?'match':'not match');close()};"|more
复制代码

评分

参与人数 1技术 +1 收起 理由
yyz219 + 1 乐于助人

查看全部评分

 楼主| 发表于 2025-3-12 20:20:04 | 显示全部楼层
回复 9# Five66


    PE 下也成功 谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 13:36 , Processed in 0.020401 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表