我想在 USB 记忆棒中重新生成一个文本/虚假文件目录,其名称与主目录中存在的文件名称完全相同。
主目录位于 TB 驱动器上,太大了,无法放在任何 USB 记忆棒上。但是,当我使用 USB 记忆棒时,我希望在从其他地方下载重复文件时发生文件名冲突。例如:我尝试下载某些内容,它会说“您已经有一个名为...的文件”
当我用新的附加文件更新主目录并手动将生成的虚假文件文件结构移动到 USB 记忆棒上时,我不介意手动运行这个脚本(只要它相对较快)。
我有至少 3 级目录结构。我使用 txt 文件构建了一个简单的测试目录结构,而不是(大多数)pdf 真实结构。当我输出tree /a /f . > list.txt
,:
Folder PATH listing for volume Windows
Volume serial number is 00C7-D795
C:\USERS\USER\DESKTOP\TEST
| list.txt
| script.bat
| script.txt
|
\---Top_Lvl
| file-2nd-1.txt
| file-2nd-2.txt
| file-2nd-3.txt
|
+---2nd_Level-1
| file-3rd-1.txt
| file-3rd-2.txt
| file-3rd-3.txt
|
+---2nd_Level-2
| | file-3rd-4.txt
| | file-3rd-5.txt
| | file-3rd-6.txt
| |
| \---3rd_Level-1
| file-4th-1.txt
| file-4th-2.txt
|
\---2nd_Level-3
file-3rd-7.txt
我不知道如何编写标题,以便 pdf 阅读器显示带有 .pdf 扩展名的文件(但实际上是一个文本文件)——这将是一个非常棒的奖励。而且我找不到命令(据我所知,attrib 不起作用)将文件的大小输出到文本输出中。因为通过单击假文件就可以获得实际文件的大小,而不必在其他地方查找任何东西,这将很酷。
潜在的部分解决方案?
我找到了这个:
Windows / 创建包含文件名的子文件夹的 txt 文件
但它看起来很混乱,并且只生成一个级别的目录。
当我重写/修改它时,它工作了一次,然后就停止工作了:
@echo off
for /dd %%D in (*) do (
cd %%~nxD
tree /a /f > ..\%%~nxD.txt
cd ..
echo %%~nxD > dir_info.tmp
for /f "skip=3 delims=*" %%a in (%%~nxD.txt) do (
echo.%%a >> dir_info.tmp
)
copy /y dir_info.tmp %%~nxD.pdf
del /f /q dir_info.tmp
)
它会将结果转储到运行的目录中,而不是将其放到桌面上(如果我使用多台计算机/帐户访问主目录驱动器,我不知道如何将其放到默认桌面 - 而不是对其进行硬编码)。我不确定您是否可以指定 USB 记忆棒,因为它可能会一直变化,具体取决于插入的其他内容。
此外,我经常使用旧的 Windows 系统,这就是我研究批处理文件的原因。如果有应用程序可以做到这一点,我肯定会考虑它 - 而不是重新开始。
@eris 建议使用 Robocopy,还有一种叫做 RichCopy 的东西:
https://technet.microsoft.com/en-us/magazine/2009.04.utilityspotlight
但这些应用将使实际的主目录的重复 - 并且我没有那么多备用存储空间,无论是在主驱动器中(并且,如前所述:在工作的 USB 记忆棒中)。
看来我说的还不够清楚;我正在尝试创建一个影子目录,其中包含所有文件名(以及有关真实文件的最佳信息,如大小)包括扩展名 - 但占用的空间最小;我猜它的实际空间消耗将是1兆字节或3兆字节(因为每个文件和目录都使用~block)而不是100兆字节(例如:50mb文件、1mb文件、832k文件、10mb文件、15mb文件)。
如果我能让命令行正常工作,那么 robocopy 看起来就是我想要的:
ROBOCOPY Top_Lvl Shadow /CREATE
不创建子目录。
答案1
@eris 的想法是正确的。
从命令行:
robocoy *Top_Lvl* *Shadow* /create /mir
看起来它创建了一个带有零长度文件的影子目录结构,该结构镜像了主目录。剩下的就是弄清楚如何在驱动器上执行此操作,这应该是找出源和目标路径的简单问题。但是,它确实需要谨慎使用,因为它不会在覆盖文件和目录之前自动抛出错误(在我看来,这不是最佳选择)。
它不能完成制作提供信息(原始文件的大小)的文件的额外工作,但就目前而言它是一个足够好的解决方案。