我希望将文件从目录结构复制到新文件夹.我不是要保留文件结构,只是获取文件.文件结构可以有嵌套文件夹,但是名为'old'的文件夹中的任何内容我都不想移动.
我做了几次尝试,但我的PowerShell知识非常有限.
示例是当前文件结构的存在位置:
Get-ChildItem -Path "C:\Example\*" -include "*.txt -Recurse |% {Copy-Item $_.fullname "C:\Destination\"}
Run Code Online (Sandbox Code Playgroud)
这给了我所有我想要的文件,包括我不想要的所有文件.我不想包含"旧"文件夹中的任何文件.要注意:有多个"旧"文件夹.我试过--exclude,但看起来它只与文件名有关,我不知道如何在路径名上排除 - 同时仍然复制文件.
有帮助吗?
我试图在Windows下执行一个简单的文件复制任务,我遇到了一些问题.
我的第一次尝试是使用
import shutils
source = 'C:\Documents and Settings\Some directory\My file.txt'
destination = 'C:\Documents and Settings\Some other directory\Copy.txt'
shutil.copyfile(source, destination)
Run Code Online (Sandbox Code Playgroud)
copyfile 无法找到源和/或无法创建目的地.
我的第二个猜测是使用
shutil.copyfile('"' + source + '"', '"' + destination + '"')
Run Code Online (Sandbox Code Playgroud)
但它又失败了.
任何提示?
编辑
结果代码是
IOError: [Errno 22] Invalid argument: '"C:\Documents and Settings\Some directory\My file.txt"'
Run Code Online (Sandbox Code Playgroud) 我想找到一种方法将一个文件同时复制到多个位置(使用C#).
意味着我不希望原始文件只被读取一次,并将文件"粘贴"到另一个位置(在本地网络上).
就我的测试给我看的那样
File.Copy()
Run Code Online (Sandbox Code Playgroud)
将永远再次阅读来源.
据我所知,即使在使用内存时,该内存片也会被锁定.
所以基本上,我想模仿"复制 - 粘贴"形式的一个"复制"和多个"粘贴",而无需再次从硬盘驱动器重新读取.
为什么?因为最终,我需要将一个文件夹(超过1GB)复制到许多计算机,瓶颈是我需要读取源文件的部分.
那么,甚至可以实现吗?
我在这里有一个rstudio addin包.
其中一个插件允许用户定义目录,它会将位于包中的文件复制到该目录.
该文件位于:
atProjectManageAddins/inst/Docs/RMarkdownSkeleton.Rmd
Run Code Online (Sandbox Code Playgroud)
我试图将它复制到用户定义的目录,如下所示:
file.copy("inst/Docs/RMarkdownSkeleton.Rmd",
paste0(Dir, FolderName, "/Reports/", FolderName, "_report.Rmd"))
Run Code Online (Sandbox Code Playgroud)
我试图将它从包中的位置复制到用户定义的位置(基于两个单独的参数Dir和FolderName).
但这似乎不起作用.我的假设是我没有以正确的方式引用包目录.我试过了./Inst/,~/Inst/也许还有几个.我现在的假设是,有一个更系统的原因导致我无法file.copy()上班.
有什么建议?这甚至可能吗?
请注意,如果我通过source()和本地运行该功能runGadget(),它可以正常工作.只有在安装软件包并且我使用RStudio addins GUI引用它的软件包时,它才会失败.因此,我很确定我没有正确定义已安装.Rmd文件的文件路径.
编辑:我已经根据Carl的建议(在github上可以看到)更改为以下内容,但文件仍未被复制.
file.copy(system.file("Docs","Rmarkdownskeleton.rmd",package="atProjectManageAd??dins"),
paste0(Dir, FolderName, "/Reports/", FolderName, "_report.Rmd"))
Run Code Online (Sandbox Code Playgroud) 我有一个脚本,需要定期(每个小时)复制文件。我可以使用Windows资源管理器打开源文件夹和目标文件夹,然后复制文件而不会出现问题。
但是,如果我在PowerShell中尝试相同的操作,则会得到“拒绝访问路径”错误。我已经检查了共享的权限,并且拥有完全访问权限。为什么通过PowerShell失败?
复制项命令:
Copy-Item \\idmststtrm2\tns_admin$\tnsnames.ora -Destination \\bts13r2b\tnsnames -Force
Run Code Online (Sandbox Code Playgroud)
错误:
Copy-Item : Access to the path '\\bts13r2b\tnsnames\tnsnames.ora' is denied.
At line:1 char:1
+ Copy-Item \\idmststtrm2\tns_admin$\tnsnames.ora -Destination \\bts13r2b\tnsnames ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (\\idmststtrm2\tns_admin$\tnsnames.ora:FileInfo) [Copy-Item], UnauthorizedAccessException
+ FullyQualifiedErrorId : CopyFileInfoItemUnauthorizedAccessError,Microsoft.PowerShell.Commands.CopyItemCommand
Copy-Item : Access to the path '\\bts13r2b\tnsnames\tnsnames.ora' is denied.
At line:1 char:1
+ Copy-Item \\idmststtrm2\tns_admin$\tnsnames.ora -Destination \\bts13r2b\tnsnames ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Copy-Item], UnauthorizedAccessException
+ FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.CopyItemCommand
Run Code Online (Sandbox Code Playgroud)
编辑:
当我Get-ChildItem对目标路径执行a时,我可以看到文件夹内容。
get-item的结果:
get-item \\idmststtrm2\tns_admin$\tnsnames.ora
Directory: \\idmststtrm2\tns_admin$ …Run Code Online (Sandbox Code Playgroud) 我已经在互联网上搜索了这个,但仍然没有找到解决方案.作为一个终极尝试,我希望有人能给我一个确切的答案.
当我尝试在文件资源管理器中将文件从目录复制到另一个文件时,我得到了这个错误.我正在尝试自己做.它有一个用于浏览目录的treeview控件和一个用于显示目录内容的listview控件.部分代码如下所示:
private void copyToolStripMenuItem_Click(object sender, EventArgs e)
{
sourceDir = treeView1.SelectedNode.FullPath;
for (int i = 0; i < listView1.SelectedItems.Count; ++i)
{
ListViewItem l = listView1.SelectedItems[i];
toBeCopied[i] = l.Text; // string[] toBeCopied, the place where I save the file names I want to save
}
}
private void pasteToolStripMenuItem_Click(object sender, EventArgs e)
{
targetDir = treeView1.SelectedNode.FullPath;
try
{
for (int i = 0; i < toBeCopied.Length; ++i)
{
File.Copy(sourceDir + "\\" + toBeCopied[i], targetDir + "\\" + toBeCopied[i], true);
refreshToolStripMenuItem_Click(sender, …Run Code Online (Sandbox Code Playgroud) 我在C#中找到了一个用于执行递归文件复制的小片段,但我有点难过.我基本上需要将目录结构复制到另一个位置,沿着这条线......
来源:C:\ data\servers\mc
目标:E:\ mc
我现在的复制功能代码是......
//Now Create all of the directories
foreach (string dirPath in Directory.GetDirectories(baseDir, "*", SearchOption.AllDirectories))
{
Directory.CreateDirectory(dirPath.Replace(baseDir, targetDir));
}
// Copy each file into it’s new directory.
foreach (string file in Directory.GetFiles(baseDir, "*.*", SearchOption.AllDirectories))
{
Console.WriteLine(@"Copying {0}\{1}", targetDir, Path.GetFileName(file));
if (!CopyFile(file, Path.Combine(targetDir, Path.GetFileName(file)), false))
{
int err = Marshal.GetLastWin32Error();
Console.WriteLine("[ERROR] CopyFile Failed on {0} with code {1}", file, err);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,在第二个范围内,我要么:
Path.GetFileName(file)以获得实际文件名不带路径,但我失去了目录"MC"的目录结构或无论哪种方式,我都要做一些讨厌的字符串工作.有没有一种很好的方法在C#中执行此操作(我对.NET API缺乏了解导致我过度复杂化的事情)
我有一个ICEfaces Web应用程序,需要执行文件复制操作并向用户显示进度条.
目前,复制是通过调用'cpio'来完成的,该操作在操作完成之后才能使Java代码进展.虽然可以使用Java来监视写入的字节数与读取的字节数以估计复制进度,但我认为如果我用Java编写实际的复制操作,可能会有一个更简单的解决方案.我仍然会使用'cpio'进行存档,但实际的副本将由Java类执行.
我在搜索中发现的大多数帮助都与progressMonitor有关,它包含一个swing组件,我不确定它能做我想做的事情.我只需要一个整数/两倍的进度,我可以将其作为100%的百分比提供给我的JSF进度条组件.
我正在尝试将文件从一个文件夹复制到另一个文件夹.
这是我在我的代码中得到的:
public static void copyFile(String path) throws IOException{
newPath = path;
File destination = new File ("E:/QA/chart.js");
FileUtils.copyFile(destination, new File(newPath));
}
Run Code Online (Sandbox Code Playgroud)
但它并未将所需文件复制到其位置.需要什么,从E盘复制chart.js并复制到newPath变量位置.有没有其他方法将文件从一个地方复制到另一个地方?
在Azure发布管道期间,我想将Git存储库中的文件复制到应用程序服务中的wwwroot目录。该任务的输出显示它复制了该文件,但该文件不存在。我想我没有正确指定目标文件夹。我目前将其设置为 d:\home\site\wwwroot。谢谢你的帮助。
file-copying ×10
c# ×3
java ×2
powershell ×2
.net ×1
azure ×1
copy ×1
file-io ×1
memorystream ×1
path ×1
progress-bar ×1
python ×1
r ×1
r-package ×1
windows ×1