使用MOVE而不是XCOPY出现问题,因为内容不会移动

时间:2019-08-07 15:26:24

标签: windows batch-file cmd

我修改了一个批处理脚本,该脚本几乎可以完成我需要做的事情。它旨在获取目录的源内容,并在目标目录中创建10个子目录。然后,将内容按100个文件夹的顺序分为这10个子目录。这可行!但是它很慢,我实际上不需要XCOPY,我宁愿移动文件夹。

当我用MOVE替换功能XCOPY时出现问题。除了创建的子目录中没有内容

之外,其他所有功能都相同

我想知道是否有一种方法可以进一步修改此批处理脚本,以便它移动文件夹及其各自的子文件夹(&files)而不是XCOPY,因为它运行缓慢?

@ECHO OFF
title variable
SET source= Default
echo This tool will split folders contents into
echo Paste Directory here THEN type \ THEN press Enter:
SET /p source=
 cd %source%
SET destination= Default
echo paste Destination directory here THEN type \ THEN press Enter:
SET /p destination=
 cd %destination%
SET dcount=0
SET fcount=0
SETLOCAL ENABLEDELAYEDEXPANSION

MKDIR %destination%dir%dcount%


FOR /f "tokens=*" %%f in ('DIR /b /a:d "%source%*"') do (
  MKDIR %destination%dir!dcount!\%%f
  XCOPY %source%%%f %destination%dir!dcount!\%%f /e /y 
  SET /a fcount=!fcount!+1
  IF !fcount! EQU 100 (
    SET fcount=0
    SET /a dcount=!dcount!+1
    MKDIR %destination%dir!dcount!
  )
)

ECHO DONE.

这完成了工作,但是我希望它移动而不是XCOPY,我尝试用move替换XCOPY,但是它只创建了10个没有内容的文件夹。然后,我更详细地研究了MOVE功能,但似乎移动文件比文件夹及其子文件夹和内容更好。

2 个答案:

答案 0 :(得分:1)

这对我最终使用MOVE起作用,我们意识到嵌套在MOVE(或先前版本的XCOPY)上方的这一行MKDIR %destination%dir!dcount!\%%f在正在移动的文件中创建了另一个文件。删除后,文件结构将正确移动,其内容即刻可见。

@ECHO ON
title variable
SET source= Default
echo This tool will split folders contents into
echo Paste Directory here THEN type \ THEN press Enter:
SET /p source=
 cd %source%
SET destination= Default
echo paste Destination directory here THEN type \ THEN press Enter:
SET /p destination=
 cd %destination%
SET dcount=0
SET fcount=0
SETLOCAL ENABLEDELAYEDEXPANSION

MKDIR %destination%dir%dcount%


FOR /f "tokens=*" %%f in ('DIR /b /a:d "%source%*"') do (
  MOVE %source%%%f %destination%dir!dcount!\%%f 
  SET /a fcount=!fcount!+1
  IF !fcount! EQU 100 (
    SET fcount=0
    SET /a dcount=!dcount!+1
    MKDIR %destination%dir!dcount!
  )
)

ECHO DONE.

现在,在运行时,这将要求您粘贴要拆分的目录并输入\以关闭目录,按Enter时,它将要求您粘贴要拆分文件夹的目标位置嵌套在其创建的子文件夹(dir0,dir,1 dir,2等)中,每个子文件夹将填充到100个子文件夹中

答案 1 :(得分:0)

您可以按照建议的here尝试使用ROBOCOPY,因为要移动文件夹而不是文件,因此需要MOVE开关而不是MOV。