百度找不到,但高手都知道(感觉他们都知道)的一个小细节--BUG调试报告

语言 Batch

前言

以前我一直不明白为什么那么多应用程序在读取“文件路径”作为参数时为什么总是在正式的“文件路径”前要加上个“-f”、"-d"、"-file"以及“-path”之类的引导参数,以为只是纯粹的装帅,或者增加程序使用的代入感,亦或者是便于理解之类的。所以,我写的程序中也常常会带一些引导参数。

知道今天,我终于发现了这个小秘密...虽然触发条件很苛刻(也不是很少见),但稍不留神就会遇到。然后,一分钟过去了,一小时也过去了...无助的看着自己的项目,再看看网上一堆抄过来又抄过去的,甚至是抄烂了的文章、博客...哎~洗洗睡吧...

BUG 详情

  1. 这是我写的一个项目,作用是计算文件的 Hash 码校验文件。在这里最重要的两个参数,一个是文件路径,一个是文件校验的 Hash 码类型。
  2. 目前使用的是批处理作为引导传递参数,用于调试程序。
  3. 在批处理中,第一个参数用于读取“文件路径”,第二个参数用于读取“Hash码类型”。然后,由批注里将参数传递给程序用于计算 Hash 校验码。
  4. 使用命令如图

很显然,这个 “A TEST” 文件夹中间存在空格,不好处理。

因为通常在参数中加上了双引号后基本不用考虑这个空格的出现,但奇怪的BUG就这么出现了...

这是执行结果:

???

显然,中间的空格还是被当作参数的 分隔符 看待了,从而导致“文件路径”参数只传递了一半,另一半被当作“Hash码类型”处理返回了这样的错误信息。

这个问题我也查了一下,的确由很少一部分人也遇到了。但几乎都没有一个确切的解决办法和问题原因的解释,这让人很难受。

我加过各种符号,几乎都没有起作用。

我想了想为什么以前没有遇到过这个问题?

最后,我把 %1 %2 这两个参数的读取调换了个位置--解释一下

{

????原:

????????%1 --- 文件路径

????????%2 --- Hash码类型

????现:

????????%1 --- Hash码类型

????%2 --- Hash码类型

}

然后就....

然后就解决了,是的,解决了...

经过反复确认,最后得到一条结论:

在传递参数时,第一个参数最好不要传递“文件路径”之类的可能包含空格的参数。不然,中间出现 空格 的话,无论你是否添加双引号都会被分割成两个参数。

当然,这也时经验之谈。就像古代的农夫种庄稼一样,虽然不是什么惊世伟学,但有时候他就是那么“”。

底层的原理我还不明白,网上有的人说是跟操作系统有关(我感觉是瞎掰...)。也不知大前辈们是否都知道这个问题才使用引导参数的,还是向我之前一样...亦或者根本没有这个BUG,只是我遇到了这个奇怪的情况...谁知道呢?Who knows?

当然如果你清楚原理的话,还望能不吝赐教!在下在这先谢过了...<( _ _ )>

结论

Batch 中第一个参数最好不要设置为可能包含空格符的参数。因为在 CMD 按程序名称调用时含空格的第一个参数无论是否使用双引号包裹还是会被当成两个看待。

原创说明

原文作者:SeaFever

转载请务必注明出处!我本人保留所有权利!

原文链接:https://www.cnblogs.com/seafever/p/12695076.html

原文地址:https://www.cnblogs.com/seafever/p/12695076.html

时间: 2024-10-14 14:52:22

百度找不到,但高手都知道(感觉他们都知道)的一个小细节--BUG调试报告的相关文章

Android百度地图 - 在地图上标注已知GPS纬度经度值的一个或一组覆盖物 - OPEN 开发经验库 - 360安全浏览器 8.1

首页   代码   文档   问答   资讯   经验   GitHub日报 登录   注册 www.open-open.com/libOPEN经验 投稿 全部经验分类  Android IOS JavaScript HTML5 CSS jQuery Python PHP NodeJS Java Spring MySQL MongoDB Redis NOSQL Vim C++ C# JSON Ruby Linux Nginx Docker 所有分类  >  开发语言与工具  >  移动开发  

校花的贴身高手 第一卷 神奇的任务 第050章 一个篮球引发的血案(上)

第050章 一个篮球引发的血案(上) “嗷——”邹若明痛苦的嚎叫了一声,他的手腕已经被砸的脱臼了,篮球穿过了他的双手,直接向他的脸上拍去! “砰”,又是一声巨响,邹若明这次连嚎叫都没来得及嚎叫,就鼻孔飞血的倒在了地上,鲜血在空中划出了一道彩虹,很有冷酷的美感. 邹若明被直接拍的昏死了过去,一旁和他一起玩篮球的走狗们也都傻了眼了,这还是篮球么?简直就是炮弹了! 再看那个始作俑者,林逸很是没事儿人似的,拍了拍手上的灰尘,向教学楼继续走去.林逸心里暗暗不屑,和我装犊子呢?这次算是轻的了,要是还有下次,

金子与烂泥,都有用,又都没有用

一 上帝把一堆金条放在人群前,说,每一个人都可以从金条堆里拿金子,一边拿,一边数,最后,谁数准了,谁拿的金子就归谁. 人们疯狂地从金条堆里拿金子,可到最后,谁也没有得到金子. 上帝问人,一堆金条就放在前面,可以任意拿,却谁也没有得到金子呢? 其中的一人说,他一心想多得金子,于是拼命地拿,手越拿越快,结果数数的嘴跟不上来,数着数着,就数错了,所以没有得到金子. 另一个人说,他也一心想多得金子,于是他拼命地数,嘴越数越快,结果拿金子的手跟不上来,拿着拿着,就拿错了,所以也没有得到金子. 上帝听后,摇

Sass 基本特性-运算 感觉满满都是坑

Sass中的基本运算 一.加法 在 CSS 中能做运算的,到目前为止仅有 calc() 函数可行.但在 Sass 中,运算只是其基本特性之一.      sass做加法运算是可以不考虑参数带单位,但需要单位同一      加号可以不需要空格隔开 示例: 1 $sidebar-width: 220px; 2 $content-width: 720px; 3 $gap-width: 20px; 4 5 .container { 6 width: $sidebar-width+$content-wid

今天早上 “百度知道”有人提问 正则 ,看着挺有意思的写了一个,写好后还没有回复,楼主就关闭了,哈哈自己好慢呀

在html中,<div style="text-align: center; margin-top: 20px;"><img src="sdsd.jpg" /> <a href="http://www.sdfs.com" target="_blank"> <img src="sdsd.gif" /> </a></div><div

公众号和app和web都是客户端,都可以对接一个后台

1.公众号和app和web都是客户端,都可以对接一个后台 2.域名中包含端口号吗?:不包括,不包括 3.目前在IIS服务器上搭建了一个网站,域名也申请了,可是80端口不能使用,可以使用8000,每次访问网站都要输入xxx.xxx.xxx:8000,能不能通过什么方法直接输入域名然后转到8000端口上

有趣 GIF 动图集 - 仿佛每张小动图都诉说了一个小笑话或者小故事

点这里 来自法国南特(Nantes)的 Guillaume Kurkdjian 目前还是个学生.Kurkdjian 擅长创作一些平面动态图像,这些有趣的小动图仿佛每张都诉说了一个小笑话或者小故事,像个极其微型的小电影…… GUILLAUME KURKDJIAN 有趣的 GIF 动图集

还在用百度找资源?试试这3个顶级资源搜索网站,没有找不到的!

资源搜索是工作和学习的日常,相信很多人都喜欢用百度去搜索,虽然百度很强大,但是毕竟资源有限,今天再给大家分享3个顶级资源搜索网站,视频.音乐.图片等应有尽有,没有你找不到的哦. 1.虫部落 一个解决稀缺资源的在线搜索网站 包括各大站点搜索器,如网盘搜索.磁力猫.美剧侦探.资源猫.百度网盘.英文电子书等,所有资源统统一网打尽. 2.金搜 一个一站式搜索.简单搜索.诚信搜索平台 它可以看新闻.看视频.购物.租房.生活服务.问答等,在同一个页面可以进行不同的搜索,只需一次输入关键词,就可以进行不同的搜

从童心,到智心:百度、亚马逊、谷歌、微软为何都瞄准了儿童AI?

又一年儿童节来临,朋友圈开始满屏"晒娃",以及"晒节". 这个年头,教育孩子这件事那可是越来越讲究了. 随着所谓的"起跑线"提的越来越前,家长们的负担也在与日俱增.当年幼儿教育无非就是学说话.学走路.学认字,现在变成了提前学习各种技能.锻炼情商智商德商.培养知识基础,等等等等.面对五花八门的早期教育机构和各种教育理论.教育攻略,家长们的痛苦绝对是"谁养娃谁知道". 正所谓所有人类的痛点,都是AI的一个机会.最近在早期教育和幼儿