批量将文件复制到另一个文件夹中

| 我需要一个脚本,最好是Windows批处理或C#来执行以下操作: 显示提示,首先要求提供源文件夹, 那么它应该询问目标文件夹。最后,它将询问应从源复制到目的地的文件数量。 //我们讨论的是aprox 100.000文件,它们可以按随机顺序移动。 运行该过程后,程序应休息10分钟,然后根据先前对提示的回答循环到先前告知的过程。 我已经尝试了一点,但是还没有找到解决方案。据我所知,XCOPY无法解决所有这些条件。 提前致谢, 标记     
已邀请:
         RoboCopy(另请参阅部分也可能使您感兴趣)或 (最新:) RichCopy(下载)     
        您可以使用如下形式:
string source  = Console.ReadLine();
string destination = Console.ReadLine();
int numberOfFilesToCopy = int.Parse(Console.ReadLine());

DirectoryInfo di = new DirectoryInfo(source);
var files = di.GetFiles();
for(i=0;i < math.Max(files.Length, numberOfFilesToCopy);i++)
{
    files[i].CopyTo(destination);
}
    
        在C#中,使用System.IO.File.Copy(sourceFileName,destFileName)和System.IO.File.Delete(path)将为您执行\“移动\”。您可以创建一个简单的控制台应用程序,该应用程序接收所需的信息,然后执行工作。 请参阅System.IO.File的文档,以获取有关文件操作的更多信息。     
        我不确定这是否满足您的所有要求,但是查看robocopy(命令行中的
robocopy /?
)可能会很有用。     
        不要以为我没错过任何事= D
@ECHO OFF
::User Prompts
SET /p source=Source Folder? Use format DRIVE:\\PATH\\    :
SET /p destination=Destination Folder?  Use format DRIVE:\\PATH\\    :
SET /p count=How many files to copy?    :

::Setup the Batch file to schedule
DIR /B \"%source%\">>\"%userprofile%\\batchtemp\\source.BAT\"
SET batchfile=%userprofile%\\batchtemp\\source.BAT
ECHO SETLOCAL ENABLEDELAYEDEXPANSION>>\"%batchfile%\"
ECHO FOR /F \"USEBACKQ tokens=*\" %%A IN (\"%batchfile%\") DO ( >>\"%batchfile%\"
ECHO  COPY /Y \"%%~fA\" \"%destination%\\%%~nxA\">>\"%batchfile%\"
ECHO  SET /a count=!count!-1>>\"%batchfile%\"
ECHO  IF %count% EQU 0 GOTO CLEANUP>>\"%batchfile%\"
ECHO )>>\"%batchfile%\"
ECHO :CLEANUP>>\"%batchfile%\"
ECHO ENDLOCAL>>\"%batchfile%\"

::Setup the scheduled task based on a future time in minutes.
REM Given that the job will run on the same day not overlapping a 24 hour day

FOR /F \"tokens=1-3 delims=: \" %%F IN (\'time /t\') DO (
 SET hours=%%F
 SET minutes=%%G
)
FOR /F \"tokens=1-4 delims=/ \" %%F IN (\'date /t\') DO (
 SET day=%%F 
 SET thedate=%%G/%%H/%%I
)

SET /a minutes=%minutes%+10
IF %minutes% GRT 60 SET /a minutes=%minutes%-60 & SET /a hours=%hours%+1
SCHTASKS /Create /TR \"%batchfile%\" /ST %hours%:%minutes%:00 /MO ONCE /D %day% /SD \"%thedate%\" /ED \"%thedate%\" /TN \"Copy Files\"
    

要回复问题请先登录注册