여러 폴더에 있는 파일에 대해 명령을 어떻게 실행합니까?

여러 폴더에 있는 파일에 대해 명령을 어떻게 실행합니까?

여러 폴더에 존재하는 여러 파일에 대해 명령을 실행하는 방법을 찾으려고 합니다. 내가 이해한 바에 따르면 for루프는 CMD에서 이 작업을 수행하는 가장 좋은 방법입니다(저는 Windows를 사용하고 있습니다.). 하지만 몇 가지 문제가 발생하고 있으므로 수행해야 하는 작업 중 하나를 예로 사용하겠습니다.

이 특정 명령의 경우 여러 폴더 내에 여러 파일에 대한 폴더를 만들려고 합니다. 시각적인 내용은 다음과 같습니다.

Folder A  
    File 1.avi  
    File 2.avi  
Folder B  
    File 3.avi  
    File 4.avi

여기저기 검색을 해보니 다음과 같은 명령이 나왔습니다.

for /f "delims=*" %a in ('dir *.avi /b /s') do md "%~na"

내가 함께 스크랩한 것여기. 이것은 거의 맞습니다. 여러 폴더에 포함된 각 파일에 대한 폴더를 만듭니다. 문제는 새 폴더를 파일과 동일한 폴더에 포함해야 한다는 것입니다. 이 특정 명령은 새 폴더를 폴더 내부가 아닌 원래 폴더와 같은 위치에 배치합니다.

누구든지 어떤 아이디어가 있습니까? 어떤 도움이라도 주시면 감사하겠습니다. 감사합니다.

답변1

  1. 표준 디버깅 기술은 echo명령을 스크립트에 삽입하고 복합/복잡한 명령까지 삽입하는 것입니다. 만약 당신이

    for /f "delims=*" %a in ('dir *.avi /b /s') do @echo md "%~na"
    

    당신은 출력을 얻을 것이다

    "file 1"
    "file 2"
    "file 3"
    "file 4"
    

    노트:

    • 그만큼@echo명령을 방지합니다그들 자신표시되지 않으므로 해당 출력만 볼 수 있습니다.
    • "delims=…"for 명령 의 출력 줄을 구문 분석하는 방법을 알려줍니다 dir *.avi /b /s. 당신이 링크한 답변이 왜 제안하는지 모르겠습니다 "delims=*". 그러나 기본 동작은 공백에서 줄을 나누는 것입니다. 따라서 디렉터리 및/또는 파일 이름에 공백이 포함되어 있는 경우(표시한 대로) "delims="이 작업을 수행하려면 (구분 기호가 없음을 지정)을 사용해야 합니다.
  2. for /?또는 를 입력하면 help for해당 명령에 대한 문서가 표시됩니다 for. 다섯 번째 페이지 아래에 보면

    In addition, substitution of FOR variable references has been enhanced.
    You can now use the following optional syntax:
    
        %~I         - expands %I removing any surrounding quotes (")
        %~pI        - expands %I to a path only
        %~nI        - expands %I to a file name only
    
    The modifiers can be combined to get compound results …
    

    전체 %~na이름 이 . 이제 시도해 보세요*.avi%a

    for /f "delims=" %a in ('dir *.avi /b /s') do @echo md "%~pa"
    

    그리고 당신은 얻을 것이다

    "the_current_directory\폴더 A\"
    "the_current_directory\폴더 A\"
    "the_current_directory\폴더 B\"
    "the_current_directory\폴더 B\"

    이를 통해 우리는 당신이 하고 싶다고 결론을 내릴 수 있습니다

    for /f "delims=" %a in ('dir *.avi /b /s') do md "%~pa%~na"
    

    아래에 file 1및 디렉토리를 생성하고 아래 에 및 디렉토리를 생성합니다 . 그리고 @dave_thompson_085가 지적 했듯이 .file 2Folder Afile 3file 4Folder B%~pa%~na%~pna

관련 정보