내 공유 폴더의 "최신"폴더 경로가 포함 된 배치 파일에서 변수를 만들려고합니다.
해당 공유 폴더의 각 폴더의 끝에 버전 번호 (예 : "product_1.0.0.1")가 있습니다.일괄 처리 %% A의 마지막 문자 가져 오기
내 접근 방식은 부모 폴더를 반복하고 숫자가 가장 높은 하위 디렉터리의 마지막 문자를 확인하는 것이 었습니다.
set latest=\\Share\prod\1.0\tools\prod_1.0.0.0
for /d %%A in ("\\Share\prod\1.0\tools") do
if %%A:~1 gtr %latest:~1%
(set latest=%%A)
는 마지막 문자 %%A
에게 내가 어떻게이 9보다 큰 숫자를 처리하나요되는이 질문을 작성하는 내 마음에 나타나는 또 다른 문제를 얻을 수가 없기 때문에이 작동하지 않는 이유는 무엇입니까?
:~1
은 마지막 문자를 얻으므로 더 나은 방법은 마지막 점 뒤의 모든 것을 얻는 것입니다. 내가 어떻게 그럴 수 있니?
지연 확장을 사용하도록 설정해야합니다. 자세한 내용은 cmd console에서'setlocal /?'과'help set'을보십시오. var = %% ~ A "''set! var : ~ -1! '을''set"할 필요가 있습니다. gtr % 최신 : ~ -1 %'. '%% ~ A'는 변수보다 반복자이며 부분 문자열 추출이나 대체에 직접 사용할 수 없습니다. 그러나 % 변수 %를'%% ~ A'의 값으로 설정하는 것은 쉽습니다. 또한, Major.Minor.Build.Revision 버전 데이터를 비교하는 경우 PowerShell에서 'System.Version' 개체로 캐스팅하면 훨씬 쉽게 처리 할 수 있습니다. 하위 문자열을 분할하거나 사용하지 않고 숫자를 비교할 수 있습니다. – rojo
@rojo이 박쥐는 빌드의 일부가 아닙니다. 최신 폴더를 검색 할 필요가없고 필요한 파일을 "추측"할 필요가 없도록 일부 바이너리 및 빌드 드롭 폴더에서 작업하는 사람들에게 필요한 데이터를 얻는 쉬운 방법입니다. 하지만 '%% A'에 대한 설명을 해준 덕분에 각 루프마다 전형적인 것보다 더 효과적 일 것이라고 생각했습니다. – Pio