对于像这样的C#控制台应用程序,使用xcopy或robocopy会更好吗?此外,xcopy是否暂停,直到复制完成?
// copy web project to temp
Process proc = new Process();
proc.StartInfo.UseShellExecute = true;
proc.StartInfo.FileName = @"C:\WINDOWS\system32\xcopy.exe";
//proc.StartInfo.Arguments = @"C:\Users\Aron\Pictures\sql-help C:\temp\633965882226105579 /E /I";
proc.StartInfo.Arguments = string.Format("{0} {1} /E /I", TemplateDemoSiteFolder, SitePath);
proc.Start();
Thread.Sleep(9000); // pause for 9 seconds -not very safe though
Run Code Online (Sandbox Code Playgroud) 我试图在网络驱动器之间移动多个大文件夹(> 10 Gb,> 100个子文件夹,> 2000个文件).我已经尝试在python中使用shutil.copytree命令工作正常,但由于不同的原因它无法复制一小部分(<1%的文件).
我相信robocopy对我来说是最好的选择,因为我可以创建一个记录传输过程的日志文件.但是,因为我需要复制> 1000个文件夹手动工作是不可能的.
所以我的问题基本上是如何在python脚本中调用robocopy(即命令行),确保日志文件是在外部文件中编写的.
我正在开发一个Windows 7环境,由于组织限制,Linux/Unix是不可能的.如果有人有任何其他建议批量复制这么多文件夹具有很大的灵活性,欢迎他们.
目录结构是:
Images
-Folder1
-image1.jpg
-image2.jpg
-Folder2
-image3.jpg
-image4.png
-Folder3
-image6.png
-image7.jpg
-Folder4
Run Code Online (Sandbox Code Playgroud)
我想将所有图像(即*.jpg,*.png)文件(不是文件夹)复制到父目录("图像")中.
我尝试使用"robocopy"如下:
robocopy /np ..\..\Exam\Images ..\..\Exam\Images *.jpg *.png /S
Run Code Online (Sandbox Code Playgroud)
这里复制了所有文件和文件夹:(但我只需要复制文件.如何做到这一点?
非常感谢提前!
我正在尝试运行以下命令:
robocopy.exe \\eisdevl.nas.gatech.edu\coldfusion\devl\cfapps\cfeis\mybeap \\eisdevl.nas.gatech.edu\coldfusion\test\cfapps\cfeis\mybeap "ADMIN_HEADER.CFM" "new folder\NEW TEXT 3.TXT" /mir /log:\\eisdevl.nas.gatech.edu\coldfusion\devl\cfapps\cfei\mysync2\logs\rc_09032013_lrobinson33_1.txt /NDL /r:2 /w:2
Run Code Online (Sandbox Code Playgroud)
由此我得到:
开始时间:2013年9月4日星期三09:32:22
来源-\ eisdevl.nas.gatech.edu \ coldfusion \ devl \ cfapps \ cfeis \ mybeap \目的地-\ eisdevl.nas.gatech.edu \ coldfusion \ test \ cfapps \ cfeis \ mybeap \
Files : ADMIN_HEADER.CFM
Run Code Online (Sandbox Code Playgroud)
选项:/ COPY:DAT / R:1000000 / W:30
错误:无效的参数#4:“新文件夹\ NEW TEXT 3.TXT”
谁能给我正确的语法来处理文件夹和文件名中的空格?
尝试使用xcopy
,但当我把它放在批处理脚本中时:
Xcopy "C:\Users\%USERNAME%\Desktop\A" "C:\Users\%USERNAME%\Desktop\B" /E
Run Code Online (Sandbox Code Playgroud)
并运行它...它一遍又一遍地循环.但是,如果我将该行粘贴到命令行并按Enter键就可以了.为什么这样,我该如何解决这个问题?Robocopy在脚本中运行良好.
我正在努力解决如何处理有时在robocopy
. 命令和输出如下。
它返回 2,这意味着“额外的文件”。
总的来说,它似乎是成功的。我应该接受 2 为成功吗?
-------------------------------------------------- ----------------------------- ROBOCOPY :: 适用于 Windows 的强大文件复制 -------------------------------------------------- ----------------------------- 开始时间:2017 年 1 月 24 日星期二晚上 11:53:40 来源:C:\下载\Temp\\ 目标:C:\Inetpub\\ 文件:*.* 选项:*.* /S /E /DCOPY:DA /COPY:DAT /PURGE /MIR /MT:8 /R:1000000 /W:30 -------------------------------------------------- ----------------------------- *额外文件 689351 C:\Inetpub\\admin\dynamicfile2.zip -------------------------------------------------- ----------------------------- 总复制跳过不匹配失败额外 目录:510 510 0 0 0 0 文件:3564 0 3564 0 0 1 字节:606.15 m 0 606.13 m 0 0 673.1 k 时间:0:00:00 0:00:00 0:00:00 0:00:00 结束: 2017 年 1 月 24 日,星期二 11:53:40 PM
我正在使用从源到目标的 Robocopy。
以下将移动所有文件。
Step 1: robocopy c:\Source C:\Destination /MIR
Run Code Online (Sandbox Code Playgroud)
现在,当我逐步执行第二个命令时,应该使用 /MIR 参数从目标中删除 2019 年 1 月 1 日之前的任何内容,但是这不会发生(2019 年 1 月之后的文件仍保留在文件夹中,而不是使用 /MIR 命令删除)。我将如何解决这个问题?在 20190101 之前删除任何东西?
Step 2: robocopy c:\Source C:\Destination /MIR /maxage:19000101 /minage:20190101"
Run Code Online (Sandbox Code Playgroud) 有人可以帮我做到这一点,以便只显示电子邮件日志的一行吗?像这样:
Bytes Copied: 27.0 k on Thursday, April 29, 2021 6:15:20 PM
Run Code Online (Sandbox Code Playgroud)
这段代码给了我这个日志:
$Logfile = "C:\Powershell\robocopy.txt"
Clear-Content "C:\Powershell\robocopy.txt" -Force
$EmailFrom = "testing@test.com"
$EmailTo = "test@test.com"
$EmailBody = "completed successfully. See attached log file"
$EmailSubject = "Summary"
$files = @("SCRIPT")
for($i = 0; $i -lt $files.Count; $i++){
robocopy "C:\$($files[$i])" "C:\NEW TEST\folder\folder\$($files[$i])" /Z /e /xx /W:5 /MAXAGE:2 /NFL /NDL /NJH /nc /np /unilog+:$Logfile
}
Send-MailMessage -To $EmailTo -from $EmailFrom -Subject $EmailSubject -Body $EmailBody -attachment $Logfile -smtpserver 192.168.24 -Port 25
#log give me …
Run Code Online (Sandbox Code Playgroud) robocopy ×8
command-line ×3
powershell ×3
batch-file ×2
copy ×2
xcopy ×2
c#-3.0 ×1
cmd ×1
csv ×1
file ×1
python ×1
spaces ×1
split ×1
windows-7 ×1