如何过滤批处理文件的输入?

时间:2016-04-07 19:25:39

标签: variables batch-file input filter

我是新手(我昨天才开始学习批处理脚本),我有一个想法让我的工作更轻松。哈。我在大学工作,学生得到身份证;我们已将磁条读取器插入我们的工作站,因此我尝试编写一个接收卡输入的脚本。但是,卡片上有一堆我不需要的随机字符,例如〜#$ @%#@!=#20052。我想知道是否有一种方法可以将输入过滤成变量,例如在C中,只能获取学生ID。我不是要求任何人编写代码,而是要求如何过滤输入。

提前致谢。

2 个答案:

答案 0 :(得分:0)

这应该有效:

@echo off
setlocal EnableDelayedExpansion
set "string=%abc123;001534523=00331x"
call set "string=!string:%%=!"
for /f "tokens=2 delims=;=" %%i in ("%string%") do set "code=%%i"
echo(%code%
pause

注意

这确实要求代码前只有一个;,而前面没有=,而是紧接着之后的x;code=x。基本上它适用于任何格式为%

的字符串

它还会删除所有@echo off setlocal EnableDelayedExpansion set "string=%~1" call set "string=!string:%%=!" for /f "tokens=2 delims=;=" %%i in ("%string%") do set "code=%%i" echo(%code% pause 个符号。

要轻松使用此功能,您可以执行以下操作:

yourBatFile.bat "%abc123;001534523=00331x"

而不是像这样称呼批处理文件: private String trimFileExtension(String fileName) { String[] splits = fileName.split( "\\." ); return StringUtils.remove( fileName, "." + splits[splits.length - 1] ); }

答案 1 :(得分:0)

有一些unix工具已转换为在命令模式下工作。你可以使用gawk这是一个非常强大的字符串manupulation工具。

http://unxutils.sourceforge.net/