我修改了一个批处理脚本,该脚本几乎可以完成我需要做的事情。它旨在获取目录的源内容,并在目标目录中创建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功能,但似乎移动文件比文件夹及其子文件夹和内容更好。
答案 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。