[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 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能够判断剪切板上的内容是不是网址吗?谢谢
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2
我是小白,希望老师多多帮助

本帖最后由 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

评分人数

TOP

回复 2# aloha20200628


    我慢慢琢磨,谢谢
我是小白,希望老师多多帮助

TOP

回复 3# yyz219

如果要将没有协议前缀的网址如 www.abc.com 列入无效,则可用以下代码替换一楼代码第5行
  1. p=/^((http|https|ftp):\/\/)((?:[\w-]+\.)+[a-z0-9]+)((?:\/[^/?#]*)+)?(\?[^#]+)?(#.+)?$/i;
复制代码
1

评分人数

TOP

回复 4# aloha20200628


    我慢慢琢磨 非常感谢
我是小白,希望老师多多帮助

TOP

本帖最后由 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。保留所有权利。
请按任意键继续. . .
我是小白,希望老师多多帮助

TOP

本帖最后由 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

评分人数

TOP

回复 7# aloha20200628


    非常感谢 这个PE 也可以
我是小白,希望老师多多帮助

TOP

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

评分人数

TOP

回复 9# Five66


    PE 下也成功 谢谢
我是小白,希望老师多多帮助

TOP

返回列表