如何筛选批处理文件的输入



我对这方面很陌生(我昨天才开始学习批处理脚本),我有了一个让我的工作更轻松的想法。哈我在大学工作,学生们都有身份证;我们的工作站上插了磁条阅读器,所以我正试图写一个脚本,接受卡片上的输入。然而,卡片上有一堆我不需要的随机字符,比如~#$@%#@=#20052。我想知道是否有一种方法可以将输入过滤到一个变量中,比如在C中,只需要学生ID。我不是要求任何人编写代码,而是要求如何过滤输入的大致概念。

提前谢谢。

这应该有效:

@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"

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

http://unxutils.sourceforge.net/

最新更新