我有很多文件(数百 GB),我想把其中一些给我的朋友。但他必须选择他需要哪些文件,而我无法一次把所有文件都给他(我没有这么大的 USB 闪存或 USB 硬盘)。我可以列出所有文件,并将它们传输到小型 USB 闪存上给他,然后他就可以说出他想要哪些文件夹,哪些不需要。
我应该如何制作文件列表,以便在标准 Windows XP 安装或使用一些类似 WindowsExplorer 的小型程序中轻松查看?我可以制作ls -lR
类似列表并将其存储在 txt 中,但我的朋友很难查看此列表。Total diskdir
Commander 有一个插件,它可以将文件夹存档到仅存储文件名称和路径的文本文件中。然后,此插件允许 total commander 在该存档内移动,就像在 zip 或 arj 内移动一样。但我认为,total commander 对我的朋友来说太难使用了,所以我问的是类似 Windows Explorer 的解决方案(例如 winzip 允许 Explorer 在 zip 存档内移动,我想要类似的东西)。
所以。我可以安装任何程序,也可以将查看器程序和文件列表存储在 USB 闪存上。
答案1
假设你可以得到电源外壳安装在您的本地机器上(或已经安装)以下脚本可以执行您想要的操作(它可能在 powershell v1 中工作,不确定):
$dupedir = "D:\Backup"
$newdir = "C:\Temp"
$dupelist = Get-ChildItem -Force -Recurse -ErrorAction SilentlyContinue $dupedir
foreach ($item in $dupelist)
{
If ($item -is [Io.DirectoryInfo])
{
$itemtype = "directory"
}
If ($item -is [Io.FileInfo])
{
$itemtype = "file"
}
New-Item -Force -type $itemtype -Path $item.FullName.Replace("$dupedir","$newdir")
}
将路径更改为$dupedir
您想要让朋友知道的路径的根目录。此脚本运行完毕后,您应该在 C:\Temp(或者如果您也更改了变量的目录,则在其他地方)中拥有要让朋友查看的文件结构的精确镜像(但不是实际文件)$newdir
。不要将$newdir
变量放在变量的目录中$dupedir
,否则您将获得无限递归,最终可能会耗尽所有磁盘空间(即使“文件”是 0 字节文件)。
powershell 的优点是您可以在命令行中“编写”脚本(类似于 bash)。将代码复制到文本编辑器中,更改路径,然后将整个内容复制并粘贴到 powershell 窗口中,它就会发挥它的魔力。
我知道你提到过你有 bash,如果你想在 unix/linux 机器上做这个,我可能可以用 bash 来做。不幸的是,当需要摆弄 windows 文件系统时,我对 bash 脚本一直不太在行。
答案2
只需使用dir /s > C:\temp\filename.txt
命令即可。这会将目录结构输出到文件 C:\temp\filename.txt。从您要向下的位置开始。
然后只需将 TXT 文件发送给他即可。
答案3
为什么不使用 zip 文件?您可以在一个窗口中查看所有文件,但将它们解压到不同的文件夹中。
答案4
我思考了这个问题一段时间,并想到了两个解决方案。最好的一个如下。
使用猫这是一个可以索引文件系统树(如 DVD 或硬盘)的程序(无需将大文件存储到索引中)并将多个文件存储在一个目录中。这可能是完成此类任务的首选程序,因为它还将音乐(ID3 标签)和视频(分辨率、持续时间等)的元信息包含在目录中。另一个不错的功能是 cdcat 可以计算索引目录或文件(节点)的大小。
它会将所有元信息(以及像 nfo 这样的小文件,如果您配置它来执行此操作)保存在压缩的 XML 文件中。要将文件从您(人员 A)复制到某人(人员 B),在允许他(人员 B)选择他真正想要的内容后,可以按如下方式操作:
- 人物 A 对他所有感兴趣的文件进行了索引(在执行此操作之前,您应该检查 cdcat 的设置以确定将包含哪些内容,例如 nfo、ID3 标签等),然后将它们保存为一个目录。
- 甲将目录复制给乙。
- 现在,B 必须以某种方式选择文件。我想到了一个主意,可以使用可以添加到每个节点(目录或文件)的类别字段。例如,此字段可以用作优先级。任何没有递归附加类别或具有特殊类别的节点以后都不会被复制。类别也保存到 XML 文件中,编写一个解析器来导出它并不难,例如,编写一个 .bat 脚本或 Bash 脚本来复制所有想要的文件。
- B 将特定于操作系统的复制脚本交给 A(或者当然 B 将修改后的目录返还并让 A 生成复制脚本)。
- 人员 A 执行复制脚本并将数据介质交给人员 B。(会有一点不便,因为 cdcat 不会保存将数据索引到目录的挂载点的路径。)
- B 将文件复制到他的存储中并将数据介质交还给 A。
这个解决方案还不完美,但这是我想到的最好的解决方案。我还没有用过,但以后会用。在此期间,我需要编写一些扩展或脚本来生成 Linux 和 Windows 的复制脚本。我的计划是将其直接包含在 cdcat 程序中。
值得指导的第二个更复杂的解决方案是使用git 附件这可能也可以用于此,但我没有像使用 cdcat 的解决方案那样仔细考虑这个问题,因为第二种方法在某种程度上要求两个人(A 和 B)都拥有 git-annex 并且知道如何使用它……
我将及时向你通报最新情况。