批处理以将文件复制到另一个具有中断的文件夹

本文关键字:中断 文件夹 另一个 文件 复制 批处理 | 更新日期: 2023-09-27 17:59:01

我需要一个脚本,最好是一个windows批处理或C#来执行以下操作:

显示一个提示,首先询问源文件夹,那么它应该询问目标文件夹。最后,它将询问应该从源复制到目的地的文件数量。

//我们谈论大约100000个文件,它们可以按随机顺序移动。

进程运行后,程序应中断10分钟,然后通过之前对提示的回答,循环执行之前告诉它的进程。


我试过一点,但没有找到解决办法。据我所见,XCOPY无法绕过所有这些标准。

提前感谢,标记

批处理以将文件复制到另一个具有中断的文件夹

  1. RoboCopy(另请参阅部分可能也会引起您的兴趣)或
  2. (更新:)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(路径)将为您执行"移动"操作。你可以创建一个简单的控制台应用程序,接收你需要的信息,然后完成工作。

查看System.IO.File的文档,了解有关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"