フォルダとその内容を別のフォルダに一括移動/切り取りする

フォルダとその内容を別のフォルダに一括移動/切り取りする

テキスト ファイルからフォルダーとその内容をコピーできるバッチ スクリプトがあるのですが、フォルダーと内容をコピーするだけでなく、移動/切り取りするように調整するのを手伝ってくれる人はいませんか?

  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前 (および前の例では の前) に置くことでテストできます。robocopy
move

関連情報