• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >DOS/BAT > for命令的一些bug分析

for命令的一些bug分析

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了dos for命令,批处理for命令,for命令,for命令详解,bat for命令等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
1、关于冒号:当某行内容以 : 打头时,用 for /f "tokens=1* delims=:" %%i in ('findstr /n .* test.txt') do echo.%%j 会把 :
过滤掉;

  2、关于分号:findstr .* test.txt 可以把以分号打头的行完整显示出来,但是,用在for语句中就不能找到了,必须加上参数/n才可以
,似乎是for语句会把以分号打头的行当作注释内容忽略掉,好象不是findstr的错;而不放在for语句中的 type、more和findstr都是可以的;

  解决问题1和问题2的方案有:

稍微复杂一点的:

@echo off
:: 不会忽略空行
for /f "delims=" %%i in ('findstr /n .* test.txt') do (
set "str=%%i"
call set "str=%%str:*:=%%"
call echo "%%str%%"
)
pause

最简洁的:

@echo off
:: 此代码会忽略空行
for /f "delims= eol=" %%i in (test.txt) do echo %%i
pause


  3、在for扩展中,%%~si 表示扩充的路径只含短文件名,但是在以下的测试过程中,却发现真正的情况并非如此:

  测试环境:
--------------------------------------------------------------------------------
D:\abcdefg hijk\abcd efgh.txt
D:\abcdefg hijk\te st.txt

  测试代码:
--------------------------------------------------------------------------------
@echo off
for /f "delims=" %%i in ('dir /a /b *.txt') do echo %%~si
pause

  测试结果:
--------------------------------------------------------------------------------
D:\ABCDEF~1\ABCDEF~1.TXT
D:\ABCDEF~1\TEST~1.TXTtxt

  看到测试结果的最后一条记录了吗?居然扩展到了 TEST~1.TXTtxt !

  总结了一下出错的情形,似乎是这样的:当路径中有超过一个的地方因为目录名超过11个字符而扩充到短文件名的时候,文件名+后缀名
少于11个字符且带空格的文件就会发生扩展错误。 </div>

您可能想查找下面的文章:

  • DOS批处理高级教程 第三章 FOR命令中的变量
  • DOS批处理高级教程 第二章 DOS循环for命令详解
  • DOS 批处理命令For循环命令详解
  • 批处理for命令使用指南
  • 利用for命令提权的方法分享
  • for命令的一些bug分析

相关文章

  • 命令行实现MAC与IP地址绑定 ip mac绑定 如何绑定mac地址
  • MSDOS.SYS文件的参数设置方法
  • 文本左右对齐排版的批处理
  • DOS 下的批处理文件
  • css js 图片压缩批处理命令(基于YUI Compressor)
  • 用bat文件修改ip
  • CMD下读取/修改/删除注册表项的方法
  • 批处理制作二维码生成器
  • 三个不同文件停顿二秒弹出不同窗口的批处理
  • XCOPY的高级使用:指定日期并且用EXCLUDE排除指定文件

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • BAT文件语法和技巧(bat文件的编写及使用)
    • 怎么在 DOS 下实现“软启动”?
    • bat生成vbs通过注册表禁用或启用USB端口的代码
    • DOS中判断进程是否存在的方法
    • dos下通过wmic命令查看硬盘和内存/CPU信息(windows自带命令查看硬件信息)
    • 使用批处理清除事件查看器所有Windows EventLog日志的代码
    • bat 传递超过10个参数的情况
    • DOS批处理之DATE命令的使用方法详解
    • 收集21个DOS常用命令
    • DOS未公开的命令与参数

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有