пакетное перемещение/вырезание папок и их содержимого в другую папку

пакетное перемещение/вырезание папок и их содержимого в другую папку

У меня есть пакетный скрипт, который позволяет мне копировать папки и их содержимое из текстового файла. Может ли кто-нибудь помочь мне настроить его так, чтобы он перемещал/вырезал папки и их содержимое, а не просто копировал?

  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необходимо полное имя каталога для нового каталога, поэтому нам нужна -строка
for %%f(чтобы получить последнюю часть каталога исходного каталога). Поэтому нужно
robocopy c:\sub\meme d:\sub\meme. Вы не можете сделать robocopy c:\sub\meme d:\sub.

Вы можете протестировать этот пакетный файл, поместив echoперед robocopy-file
(и перед moveв предыдущем примере).

Связанный контент