전체 경로를 모르는 경우 파일을 디렉터리에 복사합니다.

전체 경로를 모르는 경우 파일을 디렉터리에 복사합니다.

열 때 일부 파일이 포함된 디렉터리를 생성하는 응용 프로그램이 있습니다. 이 디렉터리의 일부 파일에 액세스하여 내보내고 이 디렉터리로 가져오고 싶습니다. 디렉토리 구조는 다음과 같습니다.

+ Folder I know
   + Auto Generated Folder         'Name changes every time
      -SomeFile
      -SomeFile2
      +macro
         -macro1
         -macro2
         -macro3

'macro' 하위 디렉토리 아래의 파일만으로 작업하고 싶습니다. '내가 아는 폴더'를 보고 일치하는 'for' 명령을 사용하여 작동하는 내보내기 솔루션이 있습니다.

 for /R "C:\Folder I know\" %f in ("macro*") do @xcopy "%f" "destination path" /u /y

xcopy 명령의 /u 스위치를 사용하면 대상에 이미 존재하는 파일만 업데이트할 수도 있습니다. 이제 문제는 동일한 작업을 반대로 수행하려면 어떻게 해야 합니까? 폴더(예: c:\temp)에서 파일을 복사하고 매크로 폴더에 이미 있는 경우에만 해당 파일을 업데이트하고 싶습니다.

답변1

나는 당신이하려는 것이 무엇인지 정확히 이해하지 못하지만 환경 %CD%변수를 사용할 수 있는 것 같습니다. 이 변수는 드라이브 문자와 전체 경로를 포함하여 현재 작업 디렉터리를 추적합니다. 다음은 작동 중인 스크린샷입니다.

여기에 이미지 설명을 입력하세요

해당 변수를 알면 유용하다고 생각하는 정도까지 스크립트에서 사용할 수 있습니다. 특별한 경우에는 스크립트가 생성될 때마다 매크로 폴더에 스크립트를 복사하고 거기에서 실행해야 할 수도 있습니다.

외부에서 작동하는 스크립트를 작성할 수 있는 유일한 방법은 프로그램이 하나의 폴더 이름을 자동 생성하기 위해 생성하는 변수를 얻을 수 있는 경우입니다. 또는 자동 생성된 폴더 이름이 패턴과 일치시킬 수 있는 일종의 규칙을 따르는 경우 IF 문, RegExes 및 문자열 명령과 관련된 몇 가지 옵션이 있을 수 있습니다.

답변2

좀 더 생각하고 테스트한 끝에 해결책을 찾았습니다.

FOR /R "C:\Folder I know\" %f IN ("*") DO @xcopy "network path\%~nf" "%~pf" /e /u /y

for 명령은 내가 모르는 하위 ​​디렉터리를 포함하여 내가 아는 폴더의 각 파일만 살펴봅니다. 그런 다음 파일이 백업된 네트워크 경로를 사용하여 xcopy를 수행합니다. %~nf끝에 추가된 는 for 명령에서 현재 파일의 파일 이름을 가져옵니다 . 그런 다음 %~pffor 명령에서 현재 파일의 경로를 가져오는 를 사용하여 로컬 폴더에 복사합니다 .

관련 정보