是一个批处理增强工具,可利用论坛搜索功能搜索其他相关帖子这是他的帮助文件:------------------------------------------------------------------------
LMOD 过滤器实用程序 版本 1.3 (c) 2002 Horst Schaeffer
------------------------------------------------------------------------"LMOD"代表“行修改”或“列表修改”。LMOD 是一个 DOS 过滤器(标准输入/标准输出)。如果您不熟悉 DOS 输入/输出重定向,请阅读 FILTER.TXT。LMOD 从输入源(标准输入)中提取数据:例如从重定向的 DOS 屏幕输出中,或从任何文件中。提取的信息被插入到给定的文本或命令字符串中,并发送到标准输出以便重定向到文件中。要插入的内容由方括号中的标记指定:您可以提取完整的行、行的一部分(起始列、大小)或一个单词(按编号),甚至可以按任何顺序从源行中提取多个项目。并且这可以针对单行或输入源的给定行范围进行。您可以用 LMOD 做什么: * 用(DOS)屏幕输出中的信息设置环境变量,如 DIR、DATE 等 * 获取键盘输入 * 使用提取的输入数据生成命令 * 为给定(文件)列表的每个项目生成命令列表 * 从文件中提取(并修改)行范围 * 修改列表或表格,排列列一个简单的例子: CD | LMOD cd > %temp%\return.bat CD 命令的输出(当前目录路径)通过管道传递给 LMOD,LMOD 生成一个新的 CD 命令,其中方括号被传递的字符串替换。新命令被发送到批处理文件以便以后使用。要将提取的数据分配给环境变量,将 SET 命令(或 SETX / WINSET)重定向到临时批处理文件,然后调用它。这种方法在所有 DOS 版本下都有效,包括 Windows NT 和 2000,这些版本不允许像 NSET 这样的工具那样操作 COMMAND 环境来设置变量。例子: CD | LMOD set currdir= > %temp%\temp.bat
call %temp%\temp.bat注意: 如果没有通过管道或重定向输入,则从键盘读取输入。 如果没有输出重定向,则输出将显示在屏幕上(便于测试)。特殊 LMOD 功能: * 更改提取数据的大小写 * 使用制表符(到指定列)进行格式化输出 * 右对齐输出字段(例如用于数字字符串) * 插入 CR+LF 为每个输入行生成多个输出行 * 省略输出行末尾的 CR+LF,以便稍后附加到同一行 * 插入行号(例如生成文件名) * 按 ASCII 码或在引号中插入字符语法
------
LMOD 选项 带标记的字符串
LMOD /? (显示帮助屏幕)选项用于指定要选择的行,或用于“单词”的分隔符(详细信息见下文)。字符串以选项后面的第一个非空白字符开头(即忽略空格)。标记是方括号中的表达式。输入提取的标记表达式
--------------------------------------
一般格式:
---------------
p,l 通过位置和长度剪切的字段
$n 按编号引用的单词(见下文)
U|L 大小写转换
Rs 右对齐 所有规范都是可选的。空标记 指完整的输入行。表达式中的空格被忽略。
p,l 字段:起始列 p(1...),长度 l,用逗号分隔。例如: 提取从列 14 开始、长度为 8 的字段 默认值:
如果未指定长度,则取行的其余部分。
例如: 提取从位置 14 开始的行的其余部分。如果也未指定位置,则取完整的输入行。
例如:CD | LMOD 当前目录是 "" 注意:保留前导空格。插入的字段的结尾空格始终被移除。
$n 单词:编号 n(前面有 $ 符号),默认编号:1。这将提取输入行中的第 1、2、3... 个单词。
例如: 提取第 6 个单词。如果还指定了字段,则提取限制在该字段内。
例如: 从行中从列 14 开始的部分提取第 2 个单词。您可以指定字段或单词(编号)或两者。有关分隔符和特殊引号处理,请参见下文部分。
单词编号接受 1 到 99 的范围(两位数字)。
感叹号 指最后一个单词。除了单词编号外,还可以指定偏移量(加/减),例如 $!-1(最后一个单词之前的一个),或 $%var%+2
负或零引用将被纠正为 $1。注意:提取“单词”时,始终移除前导和尾随空格以及分隔符。$n:m 范围:单词 n 到 m,例如 $2:4 或 $!-3:!(最后 4 个单词)。
如果第二个引用(m)在第一个引用(n)之前,则会被忽略。单词之间插入一个空格。注意: 与: 相同
U|L 大小写:大写|小写转换 例如:echo %string% | LMOD set string= > temp.bat 转换包括标准 DOS 字符集(cp 437)的扩展 ASCII 字符。
有关国家特定修改,请参见 CASE103.PAT。
Rs 对齐:在大小为 n 的输出字段中右对齐字符串。
(如果指定,大小默认为源字段大小。)
这将(重新)生成右对齐列中的数字字符串的格式化输出。例如:< list.txt LMOD ........ 注意:仅当输入字段不大于 Rs 参数给出的大小时,对齐才有效。
特殊输出标记
---------------------
在输出行中定位到位置 n(1...),插入空格直到指定列。
如果输出已经超过指定位置,此标记无效。 插入 CR+LF(每个输入行可能生成多个输出行)。 省略输出末尾的 CR+LF。应放在输出字符串的末尾,因为其余部分将被忽略。 插入行号 默认使用三位数字,第一个输出行从 001 开始。(实际上,输出单元将被编号:一个单元可能通过 标记分解为多个物理行。)起始值可以通过选项 /N 设置。例如:/N00007
这也将定义使用的位数(最多允许 9 位)。 插入 ASCII 码为 n(十进制)的字符 插入可能与 DOS 命令行处理冲突的字符(除非用引号括起来)。例如: 或 。引号将被移除。如果您需要将 "
> %temp%\temp.bat ... 将获取 DIR 输出中列出的第一个文件的第 6 行,并提取列 29 处的日期标记。 dir *.* /b | LMOD /L* ren "" "" > %temp%\temp.bat ... 将所有文件重命名为小写(假设为长文件名)空行:通常为空行生成任何输出没有意义,所以 LMOD 默认不这样做。然而请注意,LMOD 首先定位指定的物理行(空行也计数!)。仅给定范围内的空行被删除。当指定单行时,LMOD 将给您从给定行号开始的第一个非空行。注意默认是 /L1,即没有 /L 选项时取第一个非空行。/E 选项以取消对空行的特殊处理
提取单词
----------------
单词由空格分隔。此外,默认定义以下分隔符(与批处理文件参数相同):逗号、分号、等号通过选项自定义分隔符:/S.... 此选项取消标准分隔符,仅保留空格。相反,以下符号(如果有的话)直到空格被视为新的分隔符。如果您需要任何标准分隔符,必须重新指定它们。
例如:LMOD /S,# ..输出字符串../B... 与 /S 相同,但也取消空格分隔符分隔符在插入输出行之前总是从输入中剥离。请注意,单词不必由字母组成。任何内容、数字或符号,如果被分隔符包围,也可能是“单词”。注意数字字符串中的逗号!
引号处理
--------------
输入行中的带引号字符串(仅“双”引号)被视为一个单词,尽管它们可能包含空格和其他分隔符。引号将被剥离。请注意,这种特殊引号处理仅在提取单词时应用。例子:
假设输入: ONE "TWO THREE" FOUR
生成: TWO THREE
"" 生成: "TWO THREE"(恢复引号)
将是: FOUR如果您不希望特殊引号处理,将引号定义为附加分隔符(选项 /S 或 /B)。建议指定两个引号,特别是当命令行中有更多引号出现时。您应该始终有平衡的引号对以避免被 COMMAND.COM 误解。例子: LMOD /S,"" Output "" > file.2
输入文件中的制表符
-------------------
如果输入文件中有制表符代码(Ctrl+I),它们将在任何操作之前扩展为适当数量的空格。在字段提取(位置、大小)和分隔符处理时也要考虑这一点。
前导和尾随空格
---------------------------
提取单词时,所有前导和尾随空格都被移除。对于字段(位置、长度)或取完整行时,仅移除尾随空格;前导空格保留!输出字符串中(如命令行中给定的)的任何空格都保留。此外,您可以使用 TAB 标记插入空格直到给定列,或输出字段的右对齐。重要:输出末尾的尾随空格也被移除。这将避免在生成 SET 命令时环境变量中出现意外空格。例子: echo set X=A > temp.bat (结果:"A ")
echo set X=A> temp.bat (结果:"A")
echo A | LMOD set X= > temp.bat (结果:"A")仅当您生成没有 CR/LF 的输出时, 标记之前的空格才会保留。例子: echo A | LMOD set X= > temp.bat (结果:"A ")
注意事项
-----
文件大小不受限制。最大行大小(输入/输出):2Kb,错误级别 0:正常,1:无效标记/表达式,2:无效选项记得删除临时文件。
例子(假设 WIN9x/英语,长文件名)
----------------------------------------(1) 设置环境变量为驱动器 A 的卷标: VOL A: | LMOD set LABEL= > %temp%\temp.bat
call %temp%\temp.bat(2) 制作批处理文件以便稍后恢复当前驱动器和目录(生成 2 个输出行): CD | LMOD cd "" > %temp%\POPDIR.BAT(3) 键盘输入 LMOD /E set INPUT= > %temp%\temp.bat
call %temp%\temp.bat 注意:如果您希望允许空输入字符串,必须使用选项 /E。否则 LMOD 忽略空行,在这种情况下输入必须用 Ctrl+"Z" 终止。(4) 使用第 4 行的 DIR 标题信息将 CHDIR 到给定文件的目录 (%fn%): dir "%fn%" | LMOD /L4 cd "" > %temp%\temp.bat (老实说,有更简单的方法:CD "%fn%\..")(5) 星期几和日期到日志文件: echo.| DATE | LMOD Updated: , >> some.log(6) 日期和时间到单行: echo.| DATE | LMOD Updated: , >> some.log
echo.| TIME | LMOD at >> some.log(7) 获取文件 %fname% 的(短)扩展名(可能包含路径): dir "%fname%" | LMOD /L6 set EXT= > %temp%\temp.bat
call %temp%\temp.bat 用同样的方法可以提取不带扩展名的(短)文件名、大小、日期/时间标记、长文件名等。(8) 将文件(名称可能包含路径)重命名为小写: dir %fname% /b | LMOD ren "%fname%" "" > %temp%\temp.bat
call %temp%\temp.bat 注意 DIR /b 列出没有路径的文件名,除非另外使用 /s 选项。(9) 将 %folder% 中的所有文件重命名为小写: dir "%folder%" /b/a-d| LMOD /L* ren "%folder%\" "" > %temp%\temp.bat
call %temp%\temp.bat
语法总结(见:LMOD /?)
-----------------------------
LMOD 选项 带标记的字符串选项:
/Ln 选择行 (默认:第一个非空白行)
/L* 所有行
/E 包含空输入行(默认:无输出)
/S.. 单词提取的分隔符,代替默认(,;=)
/B.. 与 /S 相同,但排除空格作为分隔符
/Nn 起始编号(用于标记 ),默认:/N001从源行插入(方括号中的表达式):
默认 :完整行
p,l 从位置 p,长度 l(默认其余部分)
$n 单词编号 n(! 表示最后一个单词),可选偏移量
$n:m 范围 n 到 m
U|L 转换为大写|小写
Rn 在大小为 n 的输出字段中右对齐其他标记:
插入 CR+LF
省略输出末尾的 CR+LF
行号(位数根据选项,默认:3)
在输出行中定位到位置 n
ASCII 码 n(十进制)
带引号的字符/字符串(例如用于重定向符号)----
LMOD 是 Horst Schaeffer 的免费软件 - 无任何保证
联系 - 电子邮件:horst.schaeffer@gmx.net= 2002 年 12 月 4 日