현재 네트워크에서 사용하고 있는 IP Address를 조사하는 데에는 ping command를 사용하는 게 일반적이죠.
이때 한두개도 아니고 수백개의 IP Address를 간단하게 조사는 방법이 있어서 소개합니다.
" for "commnad랑 ping commnad를 이용하면 간단하게 조사가 가능하답니다.
참, 그리고 ping에 대한 응답이 차단되어 있을 땐 arp command를 사용하시면 되지요..
(예)
for /l %i in (0,1,255) do ping -w 1 -n 1 192.168.0.%i && arp -a 192.168.0.%i >> arp.log
-------------------------------------------------------------------------------------------------------
For
파일 집합에서 각 파일에 대해 지정된 명령을 실행합니다.
-------------------------------------------------------------------------------------------------------
For
파일 집합에서 각 파일에 대해 지정된 명령을 실행합니다.
구문
for {%Variable | %%Variable} in (Set) do Command [CommandLineOptions]
for {%Variable | %%Variable} in (Set) do Command [CommandLineOptions]
매개 변수
{%Variable | %%Variable}
{%Variable | %%Variable}
필수 요소입니다. 대체 가능한 매개 변수를 나타냅니다. 명령 프롬프트에서 for 명령을 실행하려면 %Variable을
사용합니다. 배치 파일에서 for 명령을 실행하려면 %%Variable을 사용합니다. 변수는 대/소문자를 구분하며 %A, %B
또는 %C 같은 문자 값으로 표시해야 합니다.
(Set)
필수 요소입니다. 지정된 명령으로 처리하려는 둘 이상의 파일, 디렉터리, 값의 범위 또는 텍스트 문자열을 지정하며 괄호가 필요합니다.
Command
필수 요소입니다. 지정된 (Set)에 포함된 각 파일, 디렉터리, 값의 범위 또는 텍스트 문자열에서 수행할 명령을 지정합니다.
CommandLineOptions
지정된 명령과 함께 사용할 명령줄 옵션을 지정합니다.
/?
명령 프롬프트에 도움말을 표시합니다.
설명
• For 사용
• For 사용
For 명령은 배치 파일 내에서 사용하거나 명령 프롬프트에서 직접 사용할 수 있습니다.
• 배치 매개 변수 사용
• 배치 매개 변수 사용
다음과 같은 특성이 for 명령에 적용됩니다.
• For 명령은 Command에서 모든 파일을 처리할 때까지 %Variable 또는 %%Variable을 지정된 Set의 각 텍스트 문자열로 바꿉니다.
• For Variable 이름은 대/소문자를 구분하고 전역 변수이며 한 번에 총 52개 이상을 사용할 수 없습니다.
• %0부터 %9 사이의 배치 매개 변수와 충돌하지 않게 하려면 0부터 9까지의 숫자를 제외한 모든 문자를 Variable에 사용할 수 있습니다. 간단한 배치 파일에서는 %%f와 같은 단일 문자로 충분합니다.
• 복잡한 배치 파일에서는 대체 가능한 다른 변수들과 구별하기 위해 Variable에 여러 값을 사용할 수 있습니다.
• 파일 그룹 지정
• For Variable 이름은 대/소문자를 구분하고 전역 변수이며 한 번에 총 52개 이상을 사용할 수 없습니다.
• %0부터 %9 사이의 배치 매개 변수와 충돌하지 않게 하려면 0부터 9까지의 숫자를 제외한 모든 문자를 Variable에 사용할 수 있습니다. 간단한 배치 파일에서는 %%f와 같은 단일 문자로 충분합니다.
• 복잡한 배치 파일에서는 대체 가능한 다른 변수들과 구별하기 위해 Variable에 여러 값을 사용할 수 있습니다.
• 파일 그룹 지정
Set 매개 변수는 단일 파일 그룹이나 여러 파일 그룹을 나타낼 수 있습니다. 와일드카드(* 및 ?)를 사용하여 파일 집합을 지정할 수 있습니다. 다음은 유효한 파일 집합입니다.
(*.doc)
(*.doc *.txt *.me)
(jan*.doc jan*.rpt feb*.doc feb*.rpt)
(ar??1991.* ap??1991.*)
for 명령을 사용할 때 Set의 첫째 값이 %Variable 또는%%Variable을 바꾼 다음 지정된 명령을 수행하여 이 값을 처리합니다. Set 값에 해당하는 모든 파일이나 파일 그룹이 처리될 때까지 이 과정은 계속됩니다.
• In과 do 키워드 사용
• In과 do 키워드 사용
In과 do는 매개 변수는 아니지만 for 명령에 필요합니다. 이 키워드 중 하나를 생략하면 오류 메시지가 나타납니다.
• For의 추가 형식 사용
• For의 추가 형식 사용
명령 확장을 사용하면(기본값) 다음과 같은 for 명령의 추가 형식이 지원됩니다.
• 디렉터리 전용
Set에 와일드카드(* 및 ?)를 포함하면 지정된 Command는 지정된 디렉터리의 파일 집합 대신 Set와 일치하는 각 디렉터리에 대해 실행됩니다. 구문은 다음과 같습니다.
for /D {%% | %}Variable in (Set) do Command [CommandLineOptions]
• 재귀적 사용
• 재귀적 사용
[Drive:]Path에서 시작하는 디렉터리 트리를 검색하고 트리의 각 디렉터리에서 for 문을 실행합니다. /R
다음에 디렉터리를 지정하지 않으면 현재 디렉터리로 간주됩니다. Set에 마침표 하나만 있으면 디렉터리 트리를 열거만 합니다.
구문은 다음과 같습니다.
for /R [[Drive:]Path] {%% | %}Variable in (Set) do Command [CommandLineOptions]
• 값의 범위 반복
• 값의 범위 반복
반복 변수를 사용하여 시작 값(Start#)을 설정한 다음 값이 집합의 종료 값(End#)을 초과할 때까지 값의 집합
범위를 단계적으로 검사합니다. /L 은 Start#와 End#를 비교하여 반복을 실행합니다. Start#가 End#보다 작으면
명령이 실행됩니다. 반복 변수가 End#를 초과하면 명령 셸은 루프를 종료합니다. 또한 음의 Step#을 사용하면 값을 줄이면서
범위를 단계적으로 검사할 수 있습니다. 예를 들어 (1,1,5)는 시퀀스 1 2 3 4 5를 생성하고 (5,-1,1)은 시퀀스
(5 4 3 2 1)을 생성합니다. 구문은 다음과 같습니다.
for /L {%% | %}Variable in (Start#,Step#,End#) do Command [CommandLineOptions]
• 반복 및 파일 구문 분석
• 반복 및 파일 구문 분석
파일 구문 분석을 사용하여 명령 출력, 문자열 및 파일 내용을 처리합니다. 반복 변수를 사용하여 검사할 내용이나
문자열을 정의하고 다양한 ParsingKeywords 옵션을 사용하여 구문 분석을 더 자세히 수정합니다.
ParsingKeywords token 옵션을 사용하여 반복 변수로 전달할 토큰을 지정합니다. token 옵션 없이 사용하면
/F는 첫째 토큰을 검사만 합니다.
파일 구문 분석을 출력하고 문자열이나 파일 내용을 읽고 개별 텍스트 줄로 분리한 다음 각 줄을 0개 이상의 토큰으로
구문 분석하는 과정으로 이루어집니다. 그런 다음 반복 변수 값을 토큰으로 설정하여 for 루프를 호출합니다. 기본값으로 /F는
각 파일의 각 줄에서 처음 공백으로 분리된 토큰을 전달합니다. 공백 줄은 건너뜁니다. 다음은 다양한 구문의 예입니다.
for /F ["ParsingKeywords"] {%% | %}Variabe lin (FileNameSet) do Command [CommandLineOptions]
for /F ["ParsingKeywords"] {%% | %}Variable in ("LiteralString") do Command [CommandLineOptions]
for /F ["ParsingKeywords"] {%% | %}Variable in ('Command') do Command [CommandLineOptions]
FileNameSet 인수는 하나 이상의 파일 이름을 지정합니다. FileNameSet의 다음 파일로 진행하기 전에 각
파일을 열어서 읽고 처리합니다. 기본 구문 분석 동작을 무시하려면 "ParsingKeywords"를 지정합니다. 이것은 다른
구문 분석 옵션을 지정하는 하나 이상의 키워드를 포함하는 따옴표 붙은 문자열입니다.
usebackq 옵션을 사용하는 경우 다음 구문 중 하나를 사용합니다.
for /F ["usebackqParsingKeywords"] {%% | %}Variable in ("FileNameSet") do Command [CommandLineOptions]
for /F ["usebackqParsingKeywords"] {%% | %}Variable in ('LiteralString') do Command [CommandLineOptions]
for /F ["usebackqParsingKeywords"] {%% | %}Variable in ('Command') do Command [CommandLineOptions]
다음 표에서는 ParsingKeywords에 사용할 수 있는 구문 분석 키워드 목록을 보여 줍니다.
키워드 설명
eol=c
줄의 끝 문자(한 개의 문자만)를 지정합니다.
skip=N
파일의 시작 위치에서 건너뛸 줄 수를 지정합니다.
delims=xxx
구분 기호 집합을 지정합니다. 이 집합은 공백과 탭의 기본 구분 기호 집합을 대체합니다.
tokens=X,Y,M-N
각 반복에 대해 for 본문으로 전달할 각 줄의 토큰을 지정합니다. 따라서 추가 변수 이름이 할당됩니다. M-N 형식은 M번째부터 N번째까지의 토큰을 지정하는 범위입니다. tokens= 문자열의 마지막 문자가 별표(*)이면 추가 변수가 할당되고 마지막으로 구문 분석한 토큰 뒤에 줄에 남아 있는 텍스트를 받습니다.
usebackq
따옴표를 사용하여 FileNameSet에 파일 이름을 인용하고 억음 악센트 기호 내의 문자열을 명령으로 실행하며, 작은 따옴표 내의 문자열은 리터럴 문자열 명령이 되도록 지정합니다.
• 변수 대입
for 변수 참조를 위한 대체 수정자가 개선되었습니다. 다음 표에서는 변수 I에 대한 옵션 구문 목록을 보여 줍니다.
수정자가 있는 변수 설명
%~I
따옴표("")를 제거하는 %I을 확장합니다.
%~fI
전체 경로 이름으로 %I을 확장합니다.
%~dI
드라이브 문자 전용으로 %I을 확장합니다.
%~pI
경로 전용으로 %I을 확장합니다.
%~nI
파일 이름 전용으로 %I을 확장합니다.
%~xI
파일 확장명 전용 %I을 확장합니다.
%~sI
짧은 이름만 포함하도록 경로를 확장합니다.
%~aI
파일의 파일 특성으로 %I을 확장합니다.
%~tI
파일의 날짜/시간으로 %I을 확장합니다.
%~zI
파일 크기로 %I을 확장합니다.
%~$PATH:I
PATH 환경 변수 목록에 나열된 디렉터리를 검색하고 처음으로 찾은 디렉터리의 전체 이름으로 %I을 확장합니다. 환경 변수 이름이 정의되어 있지 않거나 검색으로 파일을 찾을 수 없으면 이 수정자는 빈 문자열로 확장됩니다.
다음 표에서는 복합 결과를 얻는 데 사용할 수 있는 수정자 조합 목록을 보여 줍니다.
조합 수정자가 있는 변수 설명
%~dpI
드라이브 문자 및 경로 전용으로 %I을 확장합니다.
%~nxI
파일 이름 및 확장명 전용으로 %I을 확장합니다.
%~fsI
이름이 짧은 전체 경로 이름 전용으로 %I을 확장합니다.
%~dp$PATH:I
%I에서 PATH 환경 변수의 디렉터리 목록에 나열된 디렉터리를 검색하고 처음으로 찾은 드라이브 문자와 경로로 확장합니다.
%~ftzaI
dir과 같은 출력 줄로 %I을 확장합니다.
위의 예제에서 %I과 PATH는 다른 유효한 값으로 바꿀 수 있습니다. 유효한 for 변수 이름은 %~ syntax를 종료합니다.
%I 같은 대문자 변수 이름을 사용하면 코드를 더 읽기 쉽게 만들고 대/소문자를 구분하지 않는 수정자와 혼동을 피할 수 있습니다.
• 문자열 구문 분석
• 문자열 구문 분석
괄호 사이에 있는 FileNameSet에 작은따옴표('FileNameSet')를 사용하면 직접 문자열에서 for /F
구문 분석 로직을 사용할 수 있습니다. FileNameSet은 파일에서 한 줄의 입력으로 처리된 다음 구문 분석됩니다.
• 출력 구문 분석
• 출력 구문 분석
for /F 명령을 사용하면 괄호 사이의 FileNameSet에 억음 악센트 기호를 사용하여 명령 출력을 구문 분석할
수 있습니다. 이것은 하위 Cmd.exe로 전달되는 명령줄로 처리되고 출력은 메모리에 캡처되어 파일처럼 구문 분석됩니다.
예
배치 파일에서 for 명령을 사용하려면 다음 구문을 사용합니다.
배치 파일에서 for 명령을 사용하려면 다음 구문을 사용합니다.
for %%Variable in (Set) do Command [CommandLineOptions]
대체할 수 있는 변수 %f를 사용하여 현재 디렉터리에 확장명이 .doc나 .txt인 모든 파일의 내용을 표시하려면 다음과 같이 입력합니다.
for %f in (*.doc *.txt) do type %f
위의 예제에서 확장명이 .doc나 .txt인 현재 디렉터리의 각 파일은 모든 파일의 내용이 표시될 때까지 %f 변수로
대체됩니다. 배치 파일에 이 명령을 사용하려면 표시된 %f를 모두 %%f로 바꿉니다. 그렇지 않으면 변수가 무시되고 오류
메시지가 표시됩니다.
주석 처리된 줄을 무시하고 파일을 구문 분석하려면 다음과 같이 입력합니다.
for /F "eol=; tokens=2,3* delims=," %i in (myfile.txt) do @echo %i %j %k
이 명령은 Myfile.txt 파일에서 세미콜론으로 시작하는 줄은 무시하고 각 줄을 구문 분석하여 각 줄에서 두 번째와
세 번째 토큰을 FOR 본문으로 전달합니다. 이때 토큰은 쉼표나 공백으로 구분됩니다. FOR 문의 본문은 %i를 참조하여 두
번째 토큰을 얻고, %j를 참조하여 세 번째 토큰을 얻으며, %k를 참조하여 세 번째 이후의 나머지 토큰을 모두 얻습니다.
제공한 파일 이름에 공백이 있으면 해당 텍스트에 따옴표로 묶습니다(예: "File Name"). 따옴표를 사용하려면
usebackq를 사용해야 합니다. 그렇지 않으면 따옴표는 구문 분석할 리터럴 문자열로 해석됩니다.
%i는 FOR 문에 명시적으로 선언됩니다. %j와 %k는 tokens=를 사용하여 암시적으로 선언됩니다. 문자 'z'나
'Z'보다 큰 변수를 선언하지 않는다는 조건으로 tokens=를 사용하면 토큰을 최대 26개까지 정의할 수 있습니다.
괄호 사이에 FileNameSet를 넣어 명령 출력을 구문 분석하려면 다음과 같이 입력합니다.
for /F "usebackq delims==" %i IN ('set') DO @echo %i
이 예제는 현재 환경의 환경 변수 이름을 열거합니다.
댓글 없음:
댓글 쓰기