【问题标题】:Batch to copy files to another folder with breaks批量将文件复制到另一个文件夹
【发布时间】:2011-06-18 14:34:33
【问题描述】:

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

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

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

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


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

提前致谢, 标记

【问题讨论】:

  • 文件应该移动还是复制

标签: c# windows batch-file file-transfer


【解决方案1】:
  1. RoboCopySee also 部分您可能也会感兴趣)或
  2. (更新:)RichCopy(下载)

【讨论】:

    【解决方案2】:

    你可以这样使用:

    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);
    }
    

    【讨论】:

      【解决方案3】:

      在 C# 中使用 System.IO.File.Copy(sourceFileName,destFileName) 后跟 System.IO.File.Delete(path) 将为您执行“移动”。您可以创建一个简单的控制台应用程序,接收您需要的信息,然后执行工作。

      查看System.IO.File 的文档以获取有关文件操作的更多信息。

      【讨论】:

        【解决方案4】:

        我不确定这是否满足您的所有要求,但看看 robocopy(命令行中的robocopy /?)可能会很有用。

        【讨论】:

          【解决方案5】:

          别以为我错过了什么=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"
          

          【讨论】:

            猜你喜欢
            • 2010-11-02
            • 2012-07-28
            • 2014-03-21
            • 1970-01-01
            • 1970-01-01
            • 2013-11-30
            • 2011-02-14
            • 1970-01-01
            • 2013-03-01
            相关资源
            最近更新 更多