Пакетная обработка: извлечь несколько символов строки
Как извлечь буквенно-цифровые символы только из строки?
Пример: b:lbalbqsd1287/;:!,
дает blbalbqsd1287
Это возможно с findstr
?
1 ответ
Решение
Я думаю, что это может быть как-то возможно сделать в пакетном режиме. Я не знаю как, и я уверен, что это больно, не поддается ремонту и безобразно. Но, в качестве альтернативы, вы можете использовать vbscript для выполнения работы (также встроенный и должен быть доступен в каждой ОС).
Я написал этого маленького парня здесь для вашего удовольствия:)
Option Explicit
Dim sInput, sOutput
sInput = "b:lbalbqsd1287/;:!,"
sOutput = RegEXP_VBS(sInput)
Call MsgBox (sOutput)
Function RegEXP_VBS(sIn)
Dim oREGEXP, oResult, oMatch
Set oREGEXP = CreateObject("vbscript.regexp")
oREGEXP.IgnoreCase = False
oREGEXP.MultiLine = False
oREGEXP.Global = True
oREGEXP.Pattern = "[a-zA-Z0-9]"
Set oResult = oREGEXP.Execute(sIn)
For Each oMatch in oResult
RegEXP_VBS = RegEXP_VBS & oMatch.Value
Next
End Function
Как вы можете видеть, он использует регулярное выражение для задания, которое вы можете изменить довольно легко, если изменится объем строки поиска.