텍스트 파일 (users.txt)에 사용자 목록이 있고 각 사용자가 해당 디렉토리의 모든 파일 (c : \ Folder \ )을 복사하려고합니다. username) 및 하위 디렉토리가없는 다른 디렉토리의 하위 디렉토리 (c : \ Folder 2 \ 사용자 이름).Windows 배치 파일 - 중첩 된 FOR 루프의 변수
는 지금 같은 것을 포함하는 배치 파일을 사용하고 있습니다 :
for /f %%u in (user.txt) do (
for /r "C:\Folder\%%u" %%f in (*.*) do @xcopy "%%f" "C:\Folder 2\%%u"
)
을 ...하지만 작동하지 않습니다.
는 몇 가지 테스트 후 나는 무엇이 잘못되었는지 알 수 있었다 :for /r "C:\Folder\%%u" %%f in (*.*) do @xcopy "%%f" "C:\Folder 2\%%u"
에 대한 두 번째의 유 변수 첫 번째 %% 올바르게 이름로 대체되지 않습니다.
두 번째 %% u (DO 명령 내부)는 값으로 올바르게 대체됩니다.
첫 번째 %% 변수가 올바른 값을 갖도록하는 방법이 있습니까?
의 같이 Recurse 절에서 첫
for
대체 매개 변수를 제거하는 것입니다 다른 폴더에 있습니까? – foxidriveFOR/F 인용 옵션은 FOR 변수 또는 지연된 확장을 사용할 수 없습니다. 다양한 파싱 단계가 이루어지는 순서와 관련이 있습니다. – dbenham
@foxidrive 충돌은 없어야합니다 (적어도 현재 내가하고있는 일에 대해). 그래서 어떻게 대처해야할지 생각하지 않았습니다. 어쨌든 내가 할 필요가 있다면 가장 좋은 방법은 파일의 경로를 이름으로 변환하는 것입니다. – ChemClaude