批量打开多个网页小工具处理特殊字符

之前写过一个小工具,名字叫《简易小工具实现批量打开多个网页》,看后台下载有不少网友下载了,但是在最近的使用过程中,我发现一个问题,如果网址中包含特殊字符“&”,则网址无法正常打开,调试了一下发现,原来system命令无法直接处理带有&符号的网址,尝试将网址进行常规的网址转义,类似下方

空格 - %20
"      - %22
#     - %23
%    - %25
&    - %26
(      - %28
)      - %29

但命令行仍然无法处理,最后经过苦心搜索,终于找到答案,在这里直接贴出代码,需要成品的可以直接在文章末尾下载。

 

核心代码如下:

//author:autumoon
//联系邮箱:9506#163.com
//日期:2023-04-06 
// batWebsites.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
 
#include <iostream>
#include <thread>
#include "../../Common/often/StdStrFile.h"

/************************************************************************
在Windows命令行中,特殊字符需要使用转义符号来输出。以下是一些常见的特殊字符和对应的转义符号:

特殊字符 | 转义符号

-------- | --------

& | ^&

< | ^<

> | ^>

| | ^ |

" | ^"

' | ^'

{ | ^{

} | ^}

(| ^ (

) | ^)

例如,要在命令行中输出“Hello & World”,需要使用“^&”来表示“&”字符:
/************************************************************************/
 
int main()
{
    //读取配置文件
	_tstring stWebPath = L"urls.txt";
 
	std::vector<_tstring> vUrls;
	size_t nLineCount = CStdFile::ParseTXTFile(stWebPath, vUrls);
 
	if (nLineCount <= 0 || nLineCount > 100)
	{
		CStdFile::SaveTXTLine(stWebPath, L"www.baidu.com");
		system("start www.baidu.com");
		return -1;
	}
 
	for (size_t i = 0; i < nLineCount; i++)
	{
		_tstring stUrl = vUrls[i];
		stUrl = CStdStr::ReplaceAllDistinct(stUrl, L"&", L"^&");
		_tstring stCmd = L"start " + CStdStr::AddQuoteIfContains(stUrl);
 
		if (i % 3 == 0)
		{
			std::this_thread::sleep_for(std::chrono::milliseconds(200));
		}
 
		std::string sCmd = CStdStr::ws2s(stCmd);
		system(sCmd.c_str());
	}
 
	return 0;
}
 
// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单
 
// 入门使用技巧: 
//   1. 使用解决方案资源管理器窗口添加/管理文件
//   2. 使用团队资源管理器窗口连接到源代码管理
//   3. 使用输出窗口查看生成输出和其他消息
//   4. 使用错误列表窗口查看错误
//   5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
//   6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件

成品地址:batWebsites.rar - 蓝奏云

欢迎交流与讨论。 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值