百度找不到,但高手都知道(感觉他们都知道)的一个小细节--BUG调试报告
语言 Batch
前言
以前我一直不明白为什么那么多应用程序在读取“文件路径”作为参数时为什么总是在正式的“文件路径”前要加上个“-f”、"-d"、"-file"以及“-path”之类的引导参数,以为只是纯粹的装帅,或者增加程序使用的代入感,亦或者是便于理解之类的。所以,我写的程序中也常常会带一些引导参数。
知道今天,我终于发现了这个小秘密...虽然触发条件很苛刻(也不是很少见),但稍不留神就会遇到。然后,一分钟过去了,一小时也过去了...无助的看着自己的项目,再看看网上一堆抄过来又抄过去的,甚至是抄烂了的文章、博客...哎~洗洗睡吧...
BUG 详情
这是我写的一个项目,作用是计算文件的 Hash 码校验文件。在这里最重要的两个参数,一个是文件路径,一个是文件校验的 Hash 码类型。
目前使用的是批处理作为引导传递参数,用于调试程序。
在批处理中,第一个参数用于读取“文件路径”,第二个参数用于读取“Hash码类型”。然后,由批注里将参数传递给程序用于计算 Hash 校验码。
使用命令如图:

很显然,这个 “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
百度找不到,但高手都知道(感觉他们都知道)的一个小细节--BUG调试报告的更多相关文章
- 腾讯云图片鉴黄集成到C# SQL Server 怎么在分页获取数据的同时获取到总记录数 sqlserver 操作数据表语句模板 .NET MVC后台发送post请求 百度api查询多个地址的经纬度的问题 try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会 不会被执行,什么时候被执行,在 return 前还是后? js获取某个日期
腾讯云图片鉴黄集成到C# 官方文档:https://cloud.tencent.com/document/product/641/12422 请求官方API及签名的生成代码如下: public c ...
- 有趣 GIF 动图集 - 仿佛每张小动图都诉说了一个小笑话或者小故事
点这里 来自法国南特(Nantes)的 Guillaume Kurkdjian 目前还是个学生.Kurkdjian 擅长创作一些平面动态图像,这些有趣的小动图仿佛每张都诉说了一个小笑话或者小故事,像个 ...
- 找出数组中出现次数超过一半的数,现在有一个数组,已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数
找出数组中出现次数超过一半的数,现在有一个数组,已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数 #include<iostream>using namespace s ...
- Sass 基本特性-运算 感觉满满都是坑
Sass中的基本运算 一.加法 在 CSS 中能做运算的,到目前为止仅有 calc() 函数可行.但在 Sass 中,运算只是其基本特性之一. sass做加法运算是可以不考虑参数带单位,但需 ...
- 插入函数概念 接收一个callback,然后外面函数,接一个对象,和一个next,外面都执行完了,继续执行下一个函数,相当于一个链状体,插入了一个函数的概念 | log4js 输出 等于 console.info
插入函数概念 接收一个callback,然后外面函数,接一个对象,和一个next,外面都执行完了,继续执行下一个函数,相当于一个链状体,插入了一个函数的概念 app.use(function (ctx ...
- 公众号和app和web都是客户端,都可以对接一个后台
1.公众号和app和web都是客户端,都可以对接一个后台 2.域名中包含端口号吗?:不包括,不包括 3.目前在IIS服务器上搭建了一个网站,域名也申请了,可是80端口不能使用,可以使用8000,每次访 ...
- 个人永久性免费-Excel催化剂功能第35波-Excel版最全单位换算,从此不用到处百度找答案
全球化的今天,相信我们经常可以有机会接触到外国的产品,同时我们也有许多产品出口到外国,国与国之间的度量单位不一,经常需要做一些转换运算,一般网页提供这样的转换,但没有什么比在Excel上计算来得更为方 ...
- 不用再去找rem了,你想要的rem都在这
一.兼容性. 目前,IE9+,Firefox.Chrome.Safari.Opera 的主流版本都支持了rem(大胆用吧,目前几乎所有手机浏览器都支持rem) 二.什么是rem. rem是相对于根元素 ...
- IHttpModule接口事件执行 获取Session 找了很多国内的都不对,从国外转过来一个测试可用的
我的环境,asp.net4.0框架集 不多说上代码 public class MyHttpModule : IHttpModule { public void Init(HttpApplication ...
随机推荐
- VsCode从零开始配置一个属于自己的Vue开发环境
vscode vue VsCode算是比较热门的一个代码编辑器了,全名Visual Studio Code下载地址:点我去下载插件众多,功能齐全,我在平常开发过程中都是用的它,整理了些自认好用的插件, ...
- vue基础----组件通信($parent,$children)
1.按照dom的父子级关系,在子组件中可以通过$parent 直接调用父组件的方法,也可得到父组件的属性. 2.在父组件中通过$childrens可以得到一个子组件数组,能够在父组件中调用子组件的方法 ...
- (转)协议森林04 地址耗尽危机 (IPv4与IPv6地址)
协议森林04 地址耗尽危机 (IPv4与IPv6地址) 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! IP地址是IP协议的重要组 ...
- webpack学习(一):webpack的安装和命令行
本教程可以学习到如下内容: 1.webpack的安装 2.利用webpack命令打包js文件 3.如何在js文件里面引用css并将css文件在页面里面生效 4.学习webpack相关的高级的一些参数, ...
- Event loops秒懂
Event loops秒懂 简介 JS是一种单线程脚本语言,为什么要设计成单线程? 举例说明,假设JS是多线程脚本语言,A线程修改了DOM,B线程删除了DOM,一旦B线程先执行完,DOM被删除了,A线 ...
- Golang三种方式实现超时退出
问题 前段时间发现线上有个服务接口,总是间歇性告警,有时候一天两三次,有时候一天都没有. 告警的逻辑是在一个接口中异步调用了另一个HTTP接口,这个HTTP接口调用出现超时.但是我去问了负责这个HTT ...
- [C++]那些年被虐的STL
首先很感谢**P1135奇怪的电梯 **[2.14补充:此题已被AC!然后将被我花式虐[From语]哈哈哈哈哈哈哈哈哈哈好嗨哟感觉人生已经到达了巅峰感觉人生已经到达了高潮]这道题了!在做这道题的我大致 ...
- 【转载】oracle的安装和配置
转自: https://blog.csdn.net/weixin_40364885/article/details/80787472 一.概念 oracle在使用的时候时是不收费的,如果你要在工作中来 ...
- 物联网 软硬件系统 树莓派 单片机 esp32 小程序 网页 开发 欢迎相互交流学习~
物联网软硬件开发 知识分享 多年学生项目开发经验 物联网 软硬件系统 树莓派 单片机 esp32 小程序 网页 开发 欢迎相互交流学习~ http://39.105.218.125:9000/
- 「SWTR-04」Sweet Round 04 游记
比赛链接 由于 \(\texttt{Sweet Round}\) 比赛挺好的(关键不知道为啥\(Unrated\) 开篇总结(大雾):这次比赛题目不错(有思维含量) 尽管我不会做. 我一看 \(T1\ ...