폴더와 해당 콘텐츠를 다른 폴더로 일괄 이동/잘라내기

폴더와 해당 콘텐츠를 다른 폴더로 일괄 이동/잘라내기

텍스트 파일에서 폴더와 해당 내용을 복사할 수 있는 배치 스크립트가 있습니다. 복사만 하는 것이 아니라 폴더+내용을 이동/잘라낼 수 있도록 조정하는 데 도움을 줄 수 있습니까?

  set file_list=ready.txt
    set dest_folder=c:\small\final
    for /f "delims=" %%a in (%file_list%) do (
    xcopy /Y "%%a*" "%dest_folder%%%~pa"
    )

답변1

참고: 에는 와일드카드를 사용할 수 없습니다 move.

file_list(명확성을 위해 ->를 만들어주세요 dir_list.)

@echo off
Setlocal EnableDelayedExpansion
set dir_list=ready.txt
set dest_folder=c:\small\final\ok
mkdir %dest_folder%
for /f "delims=" %%a IN (%dir_list%) do (
   set dir=%%a
   if "!dir:~-1!"=="\" set dir=!dir:~0,-1!
   move "!dir!" "%dest_folder%\"
)

ready.txt뒤에 오는 디렉토리의 경우 \는 .\move


편집하다:

한 드라이브에서 다른 드라이브로 디렉토리를 이동하므로캔트사용 move. 다음은 다음과 같은 솔루션입니다 robocopy.

@echo off
Setlocal EnableDelayedExpansion
set dir_list=ready.txt
set dest_folder=d:\small\final\ok\
if "%dest_folder:~-1%"=="\" set dest_folder=%dest_folder:~0,-1%
for /f "delims=" %%a in (%dir_list%) do (
  set dir1=%%a
  if "!dir1:~-1!"=="\" set dir1=!dir1:~0,-1!
  for %%f in (!dir1!) do set dir2=%%~nxf
  robocopy "!dir1!" "%dest_folder%\!dir2!" /MOVE /E
)

단일 파일이 아닌 robocopy전체 디렉터리만 복사하고 이동할 수 있습니다. 따라서 ready.txt디렉토리로만 구성되어야 합니다. 후행은 \처리되며 혼합될 수 있습니다.

Robocopy새 디렉토리에 대한 전체 디렉토리 이름이 필요하므로 -line이 필요합니다
for %%f(소스 디렉토리의 마지막 디렉토리 부분을 가져오기 위해). 따라서
robocopy c:\sub\meme d:\sub\meme. 당신은 할 수 없습니다 robocopy c:\sub\meme d:\sub.

-file echo앞에 ( 이전 예에서는 the 앞에) 배치하여 이 배치파일을 테스트할 수 있습니다 .robocopy
move

관련 정보