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