좋아, 나는 잠시 동안 놀고 있었고, 어디서 났는지 모르겠다. KB 번호를 줄에서 꺼내야합니다.문자열에서 배치 스크립트 하위 문자열
내가 겪고있는 문제는 KB 숫자 중 일부는 6 자이고 일부는 7이며 오류 감지를 위해 작동하는 방법을 찾지 못하는 것입니다. "-"마지막에 여분의 추가, 그래서 첫 번째는 6 characts 표시되어 있어야합니다
다음과 같이
이 만드는 오류의 두 가지 유형입니다.
x64 KB890830- 2012\MS12-000\WinSec-KB890830-006-P58310-Windows-KB890830-x64-V4.9.exe
두 번째 오류는 두 번째가 아닌 첫 번째 KB를 사용하기 때문에 임의의 "_"을 표시합니다.
ia64 KB_942288 2012\MS12-000\WinSec-KB_942288-007-P58312-WindowsServer2003-KB942288-v4-ia64.exe
편집 배치 파일 지금까지
@ECHO OFF
SETLOCAL enableDelayedExpansion
IF EXIST Export.csv DEL Export.csv
FOR /F "tokens=*" %%I in ('dir /s /b *.*') DO CALl:Generate "%%I"
pause
:Generate
SETLOCAL
IF "%~x1" NEQ ".exe" (
If "%~x3" NEQ ".msu" (
GOTO:EOF
)
)
CALL:FindArchitecture %1
CALL:FindKB %1
CALL:PathFix %1
ECHO %Architecture%,%KB%,%FilePath%>>Export.csv
CALL:Cleanup
ENDLOCAL
GOTO:EOF
:FindArchitecture
ECHO %1 | FINDSTR "x64"
IF "%ERRORLEVEL%"=="0" (
SET Architecture=x64
SET Count+=1
)
ECHO %1 | FINDSTR "x86"
IF "%ERRORLEVEL%"=="0" (
SET Architecture=x86
SET Count+=1
)
ECHO %1 | FINDSTR "ia64"
IF "%ERRORLEVEL%"=="0" (
SET Architecture=ia64
SET Count+=1
)
IF "%Count%" GTR "1" (
SET Architecture=Error
)
SET Count=0
GOTO:EOF
:FindKB
set KBNum="%~1"
set "KBNum=!KBNum:*-KB=!"
ECHO !KBNum!|findstr /I /E /R /c:"-KB[0-9][0-9][0-9][0-9][0-9][0-9][0-9]" >nul
SET "KB=KB!KBNum:~0,7!"
IF "%KB%" NEQ "" GOTO:EOF
ECHO !KBNum!|findstr /I /E /r /c:"-KB[0-9][0-9][0-9][0-9][0-9][0-9]" >nul
SET "KB=KB!KBNum:~0,6!"
GOTO:EOF
:PathFix
set Path_to_convert=%~1
set Reference_path=%~dp0
set FilePath=!Path_to_convert:*%Reference_path%=!
GOTO:EOF
:Cleanup
SET KBNum=
SET KB=
SET Count=
SET Architecture=
set InstallerPath=
set PathRemoval=
set Path=
GOTO:EOF
어떻게 그렇게 빨리 upvoted가 되었습니까?!?! :-) – dbenham
나는 그 해답을 찾고 있었다. "새로운 답변 게시 됨"이 나타나는 것을 보았고, 새로운 답변을 보았고, 그것을 upvoted했고, 내 것을 버렸다. :-) 다음과 같은 점에주의 할 필요가 있습니다. a) "KB"접두사가없는 KB 이름을 반환하고 b) 두 줄 샘플의 첫 번째 줄에있는 "KB_"와 일치합니다 (첫 번째 참조 인 두 번째와 두 번째는 내가 포스터가 원하는 것입니다), 그래서 정규식은 두 가지에 조정해야 할 수도 있습니다. –
@KenWhite - 아, 두 번째 줄에 숨어있는 두 번째 KB를 보지 못했으며 '_'이 숫자로 간주되어야한다고 생각했습니다.KB 접두사에 대해서도 취한 점. 내가 고칠거야. 감사. – dbenham