我需要每周一次在我的Google云端硬盘上复制整个文件夹。该文件夹中大约有25个文件。什么是简单的方法?

评论

我假设从Web界面开始。如果您正在使用客户端并将其同步到PC上的文件夹,这将是一种学术上的做法。

您是否只想将文件夹中的内容备份?还是您正在尝试将其添加到另一个Google帐户?您是否需要文件夹的全部内容,还是只需要指针?

我需要复制它,因为我想对它们具有不同的权限,为此,我需要具有单独的环境。但是在PC上使用google驱动器效果很好!

复制文件夹Chrome插件:chrome.google.com/webstore/detail/copy-folder/…

#1 楼

如果您在PC上使用Google云端硬盘应用程序,则可以将该文件夹复制并粘贴到Google云端硬盘目录中,这样就会复制该文件夹。我不认为可以通过Web应用程序执行此操作。

评论


不幸的是,对于Linux用户而言,直到今天Google仍不支持“ Google Drive Application”。因此,他们需要使用一种称为“ grive”的东西

–iammilind
2014年4月9日下午5:00

是将整个新文件夹重新上传到Web上,还是知道该文件夹的内容相同并且在没有完全重新上传的情况下将其复制?

–朱利安
2014年8月1日在16:23

@Julian我认为它会重新加载整个内容。

– ComputerLocus
2014年8月1日在17:42

我只是确认它确实会重新上传所有文件。笨蛋

–朱利安
2014年8月2日在5:22

如果没有该应用,则还可以右键单击-以zip格式下载该文件夹,并在取消存档后重新上传

– kamidude
18年1月18日在22:47

#2 楼

已经编写了一个应用脚本来解决这个问题。您可以复制任何文件夹内容以及其中的结构。脚本将有助于消除对Google Drive桌面应用程序的需求。通过添加触发器,您甚至可以使过程自动化。

GDrive复制文件夹结构/内容脚本



请注意:


这也添加了所有子文件夹都带有后缀_copy
folder_you_want_copied_copy位于Google云端硬盘的最高父级层次结构中,因此,如果您复制了该硬盘的子文件夹,则复制后该子文件夹会上升到最高级别


评论


超级酷的功能,即使在具有数百个子文件夹和数千个文件的超大型文件夹中也能完美工作(有些文件非常大)。谢谢Shunmugh!

– kubusz
15年8月18日在13:41

还为所有子文件夹添加了后缀“ _copy”!

–法力值
16-2-11在20:21



#3 楼

如果您在Google云端硬盘的网络界面中...


创建一个新文件夹并命名为您想要的名称。
进入“现有”文件夹,选择所有文件,右键单击并单击副本。
选择所有副本,右键单击并单击移至。选择“新建文件夹”。

请注意,如果要复制的文件夹包含子文件夹,则此方法将不起作用。

评论


右键菜单上没有“复制”选项。有“制作副本”。您的意思是,制作所有文件的副本,然后突出显示副本并将其移动到新文件夹。

–水泡花生
17年7月7日在2:13

将所有文件移动到新文件夹后,还需要重命名所有文件,以删除“ Copy of”前缀。

–汤姆
17年9月12日在22:25

这将导致所有文件的文件名带有“ Copy of”前缀。

–伊利亚·林恩(Elijah Lynn)
18年4月26日在3:58

@Blisterpeanuts如果要复制文件夹,即使它为空,也没有“进行复制”。令人讨厌的是,如果您要以空目录名称的模板开头

–迈克尔
18年8月12日在20:59

如果您在按住Ctrl的同时通过拖放操作移动了一组文件,则在鼠标指针附近会显示一个“ +”并且似乎可以正常工作,但是“复制”的文件只是硬链接,它们具有相同的ID,如果删除它们,则会删除该副本和原始文件都需要从最近的活动中恢复。抱歉,这是Google云端硬盘上的错误。

– Pablo A
19年4月16日在1:59



#4 楼

OP的答案很晚,我想在提出请求时甚至不可能,但这就是我今天要做的:


选择我要复制的文件夹。
第二次单击,然后从弹出菜单中选择“下载”
让我的浏览器将压缩的归档文件保存到一个临时目录中
从归档文件中提取文件夹,并为其重新命名
返回云端硬盘;点击蓝色的大按钮,然后从下拉菜单中选择“文件夹上传”。
返回我的计算机;抓住新命名的文件夹,然后将其拖回驱动器中。
冲洗马桶

注意:当您有很多小文件和子文件夹时,这是一个解决方案。压缩文件很小。随着总压缩文件大小的增加,它的用处也会降低。

评论


该解决方案的主要问题-除了明显需要有足够的空间来在本地存储整个驱动器内容(两次(压缩和提取)两次)以外,还在于,如果它将所有Google文档导出为适当的MS OpenOffice文档格式,然后重新加载它们时,您必须将它们转换回Google格式,并处理由此引起的所有格式问题。

–古斯
18年5月13日在11:57

在上传过程中,不会重新创建任何空目录(即其中没有文件)。

–user12345
20-2-4在1:45

#5 楼

我宁愿放弃允许第三方访问我的云端硬盘的方式,除非我必须这样做,例如Lucky 711,我才编写了自己的脚本。我将其留在这里供将来的Google搜索结果冒险者使用。它将复制文件夹及其所有内容。对于我的用例,我只通过将复制的文件夹添加为新的父对象来编写它来处理具有多个父对象的文件。如果您不想这样做,请删除“计算不是该父母的父母”部分。



function copyFolderAndContentsToFolder(folderToCopyId, newParentFolderId, newFolderName) {

  var folderToCopy = DriveApp.getFolderById(folderToCopyId);
  var newParentFolder = DriveApp.getFolderById(newParentFolderId);

  // Create the copy of the folder
  var newFolder = newParentFolder.createFolder(newFolderName);

  // Copy all the files in that folder
  var files = folderToCopy.getFiles();
  while (files.hasNext()) {
    var file = files.next();

    // Count the parents that aren't this parent
    var countOfOtherParents = 0;
    var parents = file.getParents();
    while (parents.hasNext()) {
      var parent = parents.next();
      if (parent.getId() !== folderToCopyId) { countOfOtherParents++; }
    }

    // If it's unique, then copy it. Otherwise, just add it to the new parent.
    if (countOfOtherParents == 0) {
      file.makeCopy(file.getName(),newFolder);
    } else {
      newFolder.addFile(file);
    }

  }

  // Copy all the subfolders in that folder
  var folders = folderToCopy.getFolders();
  while (folders.hasNext()) {
    var folder = folders.next();
    copyFolderAndContentsToFolder(folder.getId(), newFolder.getId(), folder.getName());
  }

}



作为参考,如果您要创建具有多个父级的文件的新副本,而不仅仅是将新文件夹添加为另一个父级,则较短的代码应如下所示:

function copyFolderAndContentsToFolder(folderToCopyId, newParentFolderId, newFolderName) {

  var folderToCopy = DriveApp.getFolderById(folderToCopyId);
  var newParentFolder = DriveApp.getFolderById(newParentFolderId);

  // Create the copy of the folder
  var newFolder = newParentFolder.createFolder(newFolderName);

  // Copy all the files in that folder
  var files = folderToCopy.getFiles();
  while (files.hasNext()) {
    var file = files.next();
    file.makeCopy(file.getName(),newFolder);
  }

  // Copy all the subfolders in that folder
  var folders = folderToCopy.getFolders();
  while (folders.hasNext()) {
    var folder = folders.next();
    copyFolderAndContentsToFolder(folder.getId(), newFolder.getId(), folder.getName());
  }

}


评论


您如何运行此脚本?或者,如何获取输入参数?

–roydukkey
18年6月18日在19:00

输入的内容是您要复制的文件夹的ID,您要在其中创建副本的文件夹的ID以及您要复制的名称。要获取文件夹的ID,请导航至该文件夹并查看URL的末尾。可能有点像1jVlkj ------------------------ Gk3D7,但所有的破折号都是字符。该乱码是Google分配的唯一ID。一旦有了三个输入,就可以从另一个函数中调用这个函数,例如copyFolderAndContentsToFolder('superLongIdString','anotherLongIdString','NewFolderName')

–工程师吐司
18年6月18日在19:13

这几乎是完美的,但就我而言,我有链接到不同文件夹的文件。因此,它不是复制文件,而是复制链接。

–roydukkey
18年6月18日在19:49

如果您的意思是文件存在于多个位置(即具有多个父级),则在帖子中解决。您可以复制countOfOtherParents ++;仅行,就可以了。对于我的用例,我明确希望这些文件只是获得另一个父项,而不是创建文件的新副本。如果您的意思是充当打开其他文件夹的超链接的文件,那么我不知道您可以这样做。

–工程师吐司
18年6月18日在20:45

即,最小的更改是这样,但“更清洁”的代码是这样

–工程师吐司
18年6月18日在20:47

#6 楼

您可以使用Google Spreadsheets的“复制文件夹”加载项:


创建Google Spreadsheets
单击Add-ons > Get add-ons并添加“ Copy Folder”加载项`
选择要复制的文件夹
完成

请参见视频教程。

或者,此chrome网络商店Google App Script可用于实现这个结果。这不需要创建Google Spreadsheet。

评论


这需要让插件“查看并阅读您的电子邮件”

–迈克尔·科尔
17年2月20日在17:48

@MichaelCole,以及其他有问题的权限:管理电子表格,加载任意网站,更糟糕的是:离线访问。我建议在解决权限问题之前,不要安装此程序。

–古斯
18年5月13日在11:54

啊..这是我们现在生活的勇敢的新后剑桥分析世界

– Abbood
18年5月13日在12:32

管理电子表格是在运行时添加电子表格日志文件。

–阿贾伊
19年6月15日在17:01

@Ajay那是我的坏事。感谢您重新提交。

– jonsca♦
19年6月22日在0:11

#7 楼

我使用多台计算机,并且不想将驱动器应用程序都放在所有计算机上,因此我编写了以下脚本以在网站上进行复制。它很丑陋而且很基本,但是可以用。它仅复制文件夹及其文件,而不复制子文件夹。我确信还有改进的空间,请随时进行改进,但我希望它至少从一开始就有用。

下面的评论,这是一个Google Apps脚本。使用它的方法是打开Goog​​le脚本应用程序,然后将所有代码复制并粘贴到空白脚本中。之后,单击菜单上的发布选项,然后选择部署为Web应用程序。然后,您可以单击“最新代码”链接,或将URL复制并粘贴到浏览器中。然后,您将找到一个框,您可以在其中键入要复制的文件夹以及复制按钮。这将创建一个您命名的文件夹的副本,以及其中所有文件的副本。

注意:它不会复制子文件夹,而只会复制文件。

function doGet()
{
  // Build UI
  // Create UI object
  var copyUI = UiApp.createApplication();
  // Create Input box referenced later by the name explicitly set below
  var userInput = copyUI.createTextBox().setName("textbox1");
  //create button
  var enterButton = copyUI.createButton("copy");
  // add all objects to UI object
  copyUI.add(userInput).add(enterButton);

  //Create clicke event handeler and add input field to handeler
  var clickHandler = copyUI.createServerHandler('onClick')
  .addCallbackElement(userInput);

  // add handelrer to the copy button
  enterButton.addClickHandler(clickHandler);

  // instantiate GUI
  return copyUI;
}


function onClick(e)
{
  // call currently active application/gui
  var app = UiApp.getActiveApplication();

  //Pass in the value of the e paramater named 'textbox1'
  var input = e.parameter.textbox1;

  // log value passed in from user input
  //Logger.log(input);

  // perform file copy
  CopyFile(input);
}


function CopyFile(filename)
{
  // declaire variables
  var newFolder_String;
  var newFolder;
  var originalFolder;
  var fileArray;
  var loopCount;
  var arrayLength;
  var newFile;
  // get original folder id
  originalFolder = DocsList.getFolder(filename);
  Logger.log(originalFolder.getId());


  // create new "copy" folder using: createFolder(<filename>_copy)
  newFolder_String = filename + "_Copy";
  Logger.log(newFolder_String);
  newFolder = DocsList.createFolder(newFolder_String);

  // get folders and files from original file using: 
    //   getFiles() from original file into an array
  fileArray = originalFolder.getFiles();

  // Copy files into folder:
  arrayLength = fileArray.length;
  loopCount = 0;

  // looping through array of file
  for (loopCount = 0; loopCount < arrayLength; loopCount++)
  {
    // create file copies using: file[i].makeCopy() and newFile.addToFolder(CopyFolder)
    newFile = fileArray[loopCount].makeCopy();
    Logger.log(newFile.getName());
    newFile.addToFolder(newFolder)
  }

}


#8 楼

要复制文件夹,请按住CTRL按钮将其拖放到另一个文件夹。

评论


那不会重复;它只是创建一个指针。我通过将文件夹的Ctrl-drag-n-drop拖放到几个不同的位置来进行测试,然后在该文件夹中创建了一个文件,该文件在每个位置都可见。

–ale
13年2月8日在19:45

那就对了。他们称其为“添加文件夹”

–th3an0maly
13年7月16日在23:33

-1,不起作用。

–起搏器
2014年10月31日在9:22

#9 楼

这是一个非常不错的Google脚本宏应用:https://script.google.com/macros/s/AKfycbxbGNGajrxv-HbX2sVY2OTu7yj9VvxlOMOeQblZFuq7rYm7uyo/exec

具有实时日志和文件夹选择器。

评论


将链接的必要部分添加到答案中会更有帮助。

– serenesat
16年6月8日在9:09