我对这方面很陌生(我昨天才开始学习批处理脚本),我有了一个让我的工作更轻松的想法。哈我在大学工作,学生们都有身份证;我们的工作站上插了磁条阅读器,所以我正试图写一个脚本,接受卡片上的输入。然而,卡片上有一堆我不需要的随机字符,比如~#$@%#@=#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/