다음과 같은 트리가 있다고 가정 해 보겠습니다.
├───animals
│ │ hippopotamus.txt
│ │ lion.txt
│ │
│ └───dog
│ poodle.txt
│ terrier.txt
│
└───food
├───fruit
│ apple.txt
│ orange.txt
│
└───vegetables
borcolli.txt
carrot.txt
corn.txt
모든 .txt 파일을 포함하지만 하위 폴더없이 기본적으로 트리를 '평평하게 만드는'디렉토리를 만드는 데 사용하는 명령은 무엇입니까?
염두에두고있는 대상 디렉터리 (C : \ Target)가 있고 모든 .txt 파일이 C : \ Tree 디렉터리 아래에 있다고 가정하면 다음 명령은 모든 .txt 파일 목록을 가져와 원하는 위치에 복사합니다. 목적지:
for /F "delims=" %a in ('dir /s /b "C:\Tree\*.txt" ') do (copy "%a" "C:\Target")
공백을 포함 할 수있는 매개 변수를 큰 따옴표로 묶습니다.
for /F
for 루프 구문 분석 텍스트를 수행합니다. 기본적으로 토큰은 공백에서 % a, % b, % c 등의 변수로 분할됩니다.이 동작을 원하지 않기 때문에 다음을 지정했습니다.
"delims="
즉, 구분 기호가 없습니다. % a는 명령 출력의 각 텍스트 행을 포함하는 변수입니다. 내가 사용한 명령은 다음과 같습니다.
dir /s /b "C:\Tree\*.txt"
그러면 C : \ Tree 폴더에서 * .txt와 일치하는 모든 파일의 디렉토리 목록이 수행됩니다. / s 플래그는 모든 하위 디렉토리 / 하위 폴더 내부를 검색하여 재귀 적으로 수행합니다. / b 플래그는 기본적으로 파일과 경로 만 나열하는 "bare"형식으로 목록을 출력합니다. 출력은 다음과 같습니다.
C:\Tree\animals\hippopotamus.txt
C:\Tree\animals\lion.txt
C:\Tree\animals\dog\poodle.txt
C:\Tree\animals\dog\terrier.txt
C:\Tree\food\fruit\apple.txt
C:\Tree\food\fruit\orange.txt
C:\Tree\food\vegetables\borcolli.txt
C:\Tree\food\vegetables\carrot.txt
C:\Tree\food\vegetables\corn.txt
그리고 물론 :
copy "%a" "C:\Target"
% a 변수로 표시된 파일을 C : \ Target 디렉토리에 복사합니다. for 루프는 기본적으로 다음 명령을 실행합니다.
copy "C:\Tree\animals\hippopotamus.txt" "C:\Target"
copy "C:\Tree\animals\lion.txt" "C:\Target"
copy "C:\Tree\animals\dog\poodle.txt" "C:\Target"
copy "C:\Tree\animals\dog\terrier.txt" "C:\Target"
copy "C:\Tree\food\fruit\apple.txt" "C:\Target"
copy "C:\Tree\food\fruit\orange.txt" "C:\Target"
copy "C:\Tree\food\vegetables\borcolli.txt" "C:\Target"
copy "C:\Tree\food\vegetables\carrot.txt" "C:\Target"
copy "C:\Tree\food\vegetables\corn.txt" "C:\Target"
DIR 옵션 또는 프롬프트 Windows 명령 (CMD)에서 루프에 대한 자세한 도움말을 들어, 입력 할 수 있습니다 help dir
또는 help for
. FOR 루프 도움말 페이지는 매우 길다는 점에 유의하십시오. ;)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다