繁体   English   中英

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

[英]Batch to copy files to another folder with breaks

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

显示一个提示,首先询问源文件夹,然后它应该询问目标文件夹。 最后,它会询问它应该从源复制多少文件到目的地。

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

进程运行后,程序将暂停 10 分钟,然后根据先前对提示的回答循环它之前被告知的进程。


我尝试了一点,但没有找到解决方案。 据我所知,XCOPY 无法解决所有这些标准。

在此先感谢,马克

你可以使用这样的东西:

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);
}
  1. RoboCopy (您也可能对“另请参阅”部分感兴趣)或
  2. (更新:) RichCopy (下载)

在 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"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM