"the input line is too long,☺was unexpected at this time"解决思路

     问题描述:

windows环境下在CMD窗口运行批处理文件(.bat),批处理文件中有10000次循环,每次在第120次循环处便报错:"the input line is too long,☺ was unexpected at this time",即“输入行太长,此时不应有☺”

可能原因:

”On computers running Microsoft Windows XP or later, the maximum length of the string that you can use at the command prompt is 8191 characters. On computers running Microsoft Windows 2000 or Windows NT 4.0, the maximum length of the string that you can use at the command prompt is 2047 characters.

This limitation applies to the command line, individual environment variables (such as the PATH variable) that are inherited by other processes, and all environment variable expansions. If you use Command Prompt to run batch files, this limitation also applies to batch file processing.”--摘自《Command prompt (Cmd. exe) command-line string limitation》

简而言之,是说命令提示框对每个命令行的最大长度有限制,WinXP及以后系统其最大长度是8191个字符。这种限制不仅对命令行有效,对于命令提示框下执行批处理文件同样有效。应特别留意环境变量(比如PATH变量等)是否超过该限制。

针对这个问题网上有如下建议:

  • Modify programs that require long command lines so that they use a file that contains the parameter information, and then include the name of the file in the command line.
  • Use shorter names for folders and files.
  • Reduce the depth of folder trees.

解决思路:

1、按上述建议缩短文件名及目录树深度等,然后并不奏效;

      2、同时继续运行以重现问题,发现问题依旧;

一个小技巧:直接运行bat批处理文件,出错时会DOS框会直接消失而看不到出错消息,这时可以在批处理文件所在目录空白处,按住Shift+鼠标右键,在此处打开命令窗口,然后把批处理文件拖进来执行,这样报错时便会看到错误信息;这比加pause并echo显示变量值的方式更方便一些。

问题依旧时,根据前面分析以及”输入行太长“的信息,开始怀疑是批处理文件执行过程中某个命令行太长超出限制。但为什么之前都正常,偏偏是循环到第120次就出错呢,为什么呢?立马横向做实验对比,在另一台远程机器上同时反复实验,发现同样的问题,不过是执行到第133次时报同样的错。总结一下,同样的错误只不过循环进行的次数不一样,说明什么呢?多问下自己为什么,因为所有问题肯定都是能解决的。自己会想到,之前循环时正常,但循环到第120次(133次)时报错,说明有某行命令开始时长度符合,但随着循环的进行,它在递增,到第120次(133次)循环时递增到长度长限,从而触发”输入行太长“的错误。

3、针对上一步的假设进一步寻找原因,进而锁定PATH环境变量;

另一个小技巧:搜索中文的”输入行太长,此时不应有“找不到合适思路,不妨搜索英文的”the input line is too long,  was unexpected at this time",可能就会有收获。很幸运找到了一些信息:

“I have had this same problem when executing a build script in a cmd window. After about 13 times I got that same error. The build script had to make sure that vcvarsall.bat was run so it executed vcvarsall.bat every time.

vcvarsall.bat is not smart enough to only add things to the path if they are not already there so a bunch of duplicate entries were added.

My solution was to add an if defined check on an environment variable which I know is set by vcvarsall.bat...

if not defined DevEnvDir (call vcvarsall.bat
)

Check your path environment variable after each run and see if it is growing. If it is and there are duplicates, you will need to be smart about adding stuff to the path. There are several ways to be smart about it.

在每一次运行时检查path环境的值是否也在增长,如果发现path里有重复项,那么就需要考虑其他更合适的方式来往path里添加内容了

4查看循环执行时PATH环境变量的值(用了最笨的办法,直接for里set path即可),发现果然path的值随着循环的执行而变大,从而定位到脚本中相应代码,进行修改。

排错时经常做的无非是横向对比,以逐步排除某部分的出错可能性,然后结合其他方式来定位错误。

参考资料:1-“Input line is too long” error in BAT File ;2-Command prompt (Cmd. exe) command-line string limitation ;(这两个参考资料即上述引用出处,很有帮助)

the input line is too long, [笑脸符号] was unexpected at this time解决思路相关推荐

  1. 【LaTex】LaTeX Warning: Citation xxx on page xxx undefined on input line xxx

    学习使用LaTeX时,引用参考文献时出现'?': 在控制台中输出: LaTeX Warning: Citation xxx on page xxx undefined on input line xx ...

  2. Latex 排版报错的语句 \begin{ALC@g} on input line 927 ended by \end{algorithmic}. \end{algorithmic}

    Latex 排版报错的语句 \begin{ALC@g} on input line 927 ended by \end{algorithmic}. \end{algorithmic} 我源代码是这个样 ...

  3. 如何在word文档插入笑脸符号,教程来啦,怎样在word插入些特殊符号

    word文档对于我们生活当中,工作当中运用得到都会使得方便快捷.会使用一些基本操作后对于我们工作效率也会有所提升.下面小编就为大家讲解如何在word文字中插入笑脸符号. 首先我们打开需要编辑的word ...

  4. 【转】UILabel上显示笑脸符号 赞一个(超酷)

    转自:http://blog.sina.com.cn/s/blog_7ccde1bf0100v9oc.html 在中国,QQ号就像是年轻人的身份证号一样,人手一个.它可以发送表情,想不想在自己的程序当 ...

  5. UILabel上显示笑脸符号

    在中国,QQ号就像是年轻人的身份证号一样,人手一个.它可以发送表情,想不想在自己的程序当中加入表情符号呢?其实iphone SDK有这功能. NSString *s = @"This is ...

  6. UILabel上显示笑脸符号 .

    在中国,QQ号就像是年轻人的身份证号一样,人手一个.它可以发送表情,想不想在自己的程序当中加入表情符号呢?其实iphone SDK有这功能. NSString *s = @"This is ...

  7. 笑脸符号 :-) 迎来30周岁生日

    这是最基本的表示友好的笑脸符号 :-),用3个键─冒号加连字号加括号─打出一个横向的"笑脸".这是由美国Carnegie Mellon大学的教授Scott E. F ahlman首 ...

  8. 设置input输入长度 中文一个文字等于2个引文字符 为了解决这个问题

    /** * 设置input输入长度 中文一个文字等于2个引文字符 为了解决这个问题 * 使用 maxcodelength="" 即可 */ $('input[type=" ...

  9. 十大互联网无名英雄:笑脸符号发明人入选

    导语:瑞典IT服务公司Pingdom周一撰文,对互联网发展历史上的十大著名技术及其发明人进行了介绍,包括GIF.RSS.Ping.@符号和笑脸表情等.但这些人都有一个共同的特点:虽然他们发明的技术广为 ...

最新文章

  1. Android源码分析(三):Mms模块总结(一)
  2. Python3--自动化办公
  3. delphi日期格式显示及文件打开方式小结
  4. js 递归查询所有的叶子结点_json树递归js查询json父子节点
  5. wpf listbox绑定不跟新_你知道新媒体吗?好像跟想象的不太一样
  6. 微机原理实验2:多字节BCD加法实验
  7. 使用find命令查找文件
  8. 华为达芬奇架构到底好在哪里?
  9. ubuntu mysql主从库的搭建
  10. uniapp连接蓝牙电子秤
  11. java 生成拼音首字母_java 根据汉字生成拼音全拼或拼音首字母的示例
  12. 杰里之一拖八烧写器版本更新:1TO8_V3.0.25【篇】
  13. KVM虚拟化技术实践
  14. 前端method常见请求方式
  15. 【STM32学习笔记】(6)—— 跑马灯实验详解
  16. ds18b20温度报警C语言程序,单片机中使用DS18B20温度传感器C语言程序(参考4)
  17. Android Studio修改工程项目编码,修正运行程序乱码问题
  18. java super extend 区别_Java泛型中extends和super的区别
  19. R语言survival包Surv函数创建生存对象、建立Cox回归模型(包含所有协变量)比较不同治疗方法生存率的差异、drop1函数计算cox回归模型自变量似然比检验值、删除冗余变量重新构建cox模型
  20. 漫步最优化五——可行域

热门文章

  1. 2013新交规扣分细则全文(转载)
  2. node:internal/modules/cjs/loader:988 throw err;
  3. 第五人格获取服务器信息失败,第五人格正在获取版本信息更新失败怎么办
  4. eclipse 2020-06版 安装配置完美教程(最后一版支持jdk1.8)
  5. 修改CentOS6系统语言为简体中文
  6. 最新godaddy域名、主机优惠连接,com,info,net,org续费优惠码
  7. vue中可编辑div添加@功能
  8. 利用Unidbg辅助还原哔哩哔哩Sign算法.
  9. 瑞芯微SDK环境+docker环境外部访问
  10. 常用元器件使用方法20:语音合成芯片XFS3031CNP的使用方法