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