mover/cortar pastas em lote e seu conteúdo para outra pasta

mover/cortar pastas em lote e seu conteúdo para outra pasta

Eu tenho esse script em lote que me permite copiar pastas e seu conteúdo de um arquivo de texto, alguém poderia me ajudar a ajustá-lo para mover/cortar as pastas+conteúdo e não apenas copiar?

  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"
    )

Responder1

Observação: você não pode usar curingas com move.

(e por favor faça file_list-> dir_listpara maior clareza.)

@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%\"
)

Para diretórios ready.txtcom final, \o \será removido antes do move.


Editar:

Como você está movendo os diretórios de uma unidade para outra, vocênão podeusar move. Aqui está uma solução com 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
)

Observe que robocopysó é possível copiar e mover diretórios inteiros e não arquivos únicos. Portanto, o seu ready.txtdeveria consistir apenas em diretórios. Os arrastos \são cuidados e podem ser misturados.

Robocopyprecisa do nome completo do diretório para o novo diretório, é por isso que precisamos da
for %%flinha - (para obter a última parte do diretório de origem)
robocopy c:\sub\meme d:\sub\meme. Você não pode fazer isso robocopy c:\sub\meme d:\sub.

Você pode testar este arquivo em lote colocando echoantes de robocopy-file
(e antes de moveno exemplo anterior).

informação relacionada