내 건물에 있는 원격 컴퓨터에서 일부 작업을 수행하기 위해 배치 파일을 작성 중입니다. 모두 동일한 접두사로 이름이 지정되지만 끝의 숫자가 변경됩니다(01-65). 나는 숫자를 기반으로 배치 파일 루프를 생성하기 위한 온라인 튜토리얼을 따르려고 노력했고 다음과 같은 결과를 얻었습니다.
FOR /l %%N in (1,1,65) do (
set HOSTNAMETOUSE=prefix-%%N
ECHO %HOSTNAMETOUSE%
)
이것은 10에 도달한 후에는 두 자리 숫자이므로 훌륭하게 작동합니다. 나에게 필요한 것은 이름 지정 스키마와 일치하는 숫자가 1-9
로 표시되는 것 입니다. 01-09
본질적으로 처음 9번의 반복에는 앞에 0이 붙는 한 자리 숫자가 필요합니다.Windows 배치 파일로 이를 수행하려면 어떻게 해야 합니까?
답변1
%HOSTNAMETOUSE%
게시된 코드는 문이 구문 분석될 때 확장되고 루프가 실행되기 전에 괄호로 묶인 전체 블록이 한 번에 구문 분석되므로 작동할 수 없습니다 . 따라서 확장된 값은 모든 반복에서 일정합니다.
실행 시 값을 얻으려면 지연된 확장을 사용해야 합니다.
@echo off
setlocal enableDelayedExpansion
FOR /l %%N in (1,1,65) do (
set HOSTNAMETOUSE=prefix-%%N
ECHO !HOSTNAMETOUSE!
)
이제 필요에 따라 접두사 0을 붙입니다.
단일 0 이상이 필요하지 않으므로 IF 문을 사용할 수 있습니다.
@echo off
setlocal enableDelayedExpansion
FOR /l %%N in (1,1,65) do (
if %%N lss 10 (set HOSTNAMETOUSE=prefix-0%%N) else set HOSTNAMETOUSE=prefix-%%N
ECHO !HOSTNAMETOUSE!
)
하지만 숫자 너비가 2자리를 초과하면 편리하지 않습니다. 보다 일반적인 해결책은 다음 문자열을 추가하는 것입니다.N원하는 길이로 0을 만든 다음 하위 문자열 작업을 사용하여N가장 오른쪽 숫자.
@echo off
setlocal enableDelayedExpansion
FOR /l %%N in (1,1,65) do (
set "n=00%%N"
set "HOSTNAMETOUSE=!n:~-2!
ECHO !HOSTNAMETOUSE!
)
이 솔루션을 사실상 원하는 개수의 선행 0으로 쉽게 확장할 수 있습니다.
답변2
나는 이렇게 할 것입니다 :
- 모든 숫자에 '0'을 추가합니다(따라서 '01'뿐만 아니라 '065'도 포함).
- 이 문자열의 마지막 2자 부분 문자열
배치 파일에서 하위 문자열을 어떻게 사용합니까(마지막 2자):
SET string=abcd
echo %string%
SET string2=%string:~-2%
echo %string2%
답변3
@dbenham의 답변에는 새로운 것이 없습니다. 명령줄에서 수집한 값 변수 중 몇 가지를 만들고 쉽게 복사하여 붙여넣을 수 있도록 여기에 게시했습니다. 크레딧은 모두 위의 @dbenham입니다.
set first=%1
set last=%2
set len=%3
setlocal EnableDelayedExpansion
FOR /l %%N in (%first%, 1, %last%) do (
set "n=0000000000000%%N"
set "padded=!n:~-%len%!
echo !padded!
)
답변4
사용ZtreeWin, 을 눌러 올바른 디렉토리로 이동한 \다음 을 눌러 이름을 바꾸려는 파일에 태그를 지정할 Enter수 있는 디렉토리를 입력하고 이름을 다음으로 바꾸십시오.CtrlTCtrlR????<0>*.*
예를 들어:
foo-0-bar.jpg -> foo-00-bar.jpg
foo-1-bar.jpg -> foo-01-bar.jpg
foo-2-bar.jpg -> foo-02-bar.jpg
...
위의 예에서 는 ????
처음 4개 문자(foo-)를 나타내고, <0>
5번째 위치에 0을 삽입하고, *.*
변경되지 않은 파일 이름(-bar.jpg)의 나머지 부분을 나타냅니다.
파일에 태그 지정:
파일 이름 바꾸기:
ZTreeWin강력한 32비트 및 64비트 텍스트 모드 파일 및 디렉토리 관리자로, 전설적인 XTreeGold(tm)를 밀접하게 모델로 삼았지만 오늘날 널리 사용되는 운영 체제에 맞게 향상되었습니다.