![Windows 上的命令行文件夹结构](https://linux22.com/image/579063/Windows%20%E4%B8%8A%E7%9A%84%E5%91%BD%E4%BB%A4%E8%A1%8C%E6%96%87%E4%BB%B6%E5%A4%B9%E7%BB%93%E6%9E%84.png)
我需要通过命令行创建一个文件夹结构,结构如下:
用户名 > 文件夹 1 > 文件夹 2 > 文件夹 3 (并且这些文件夹中还有子目录)
这是一个 Windows 主机,我已经完成了“dir /ad > dir.txt(它输出父文件夹)
另外,我应该使用哪个 DOS 命令从文本文件创建文件夹?
我曾经使用过 xcopy /T /E(它在某个时候会失败,因为大多数时间都是从这些文件夹中读取文件),我有大约 1500 个文件夹,然后这些文件夹中还有子文件夹。
答案1
不太清楚你想要什么。你想将目录结构从一台电脑复制到另一台电脑吗?你创建文本文件的主机之间是否有连接?如果是,你可以使用命令行复制不包含文件的目录结构:
robocopy [源] [目标] /创建
或者您有一个包含要创建的所有路径的文本文件。如果是这样,您可能需要使用记事本发挥创意。例如,如果您有一个包含要创建的目录的文件,例如:
c:\Users\john\dir1
使用记事本打开文件。按 CTRL+H 并将“C:”替换为“MD C:”。您的文件应如下所示。
MD c:\Users\john\dir1
现在将文件保存为批处理文件(例如 createfolder.cmd)并双击它。它将创建所有文件夹。如果某些目录包含空格,此操作将失败。您可以在 Excel 的 B 列中粘贴所有内容。在 A 列中,添加医学博士,在 C 列添加“选择全部并再次复制到记事本。现在用空字符串替换所有 Tab 并保存为批处理文件。
我希望它有帮助。
PS:如果你熟悉“for”命令这会更容易,但是“for”确实相当复杂。
答案2
您的问题没有明确说明您实际上需要做什么。
正如我所读到的,您在一个文本文件中列出了您需要创建的所有文件夹,该文件夹是通过执行 dir /ad 创建的。
这是你的第一个问题。如果你在 Vista 或 Win7 上的用户主文件夹中执行此操作,你将获得目录和连接点的混合。你将决定如何处理它们。(也许跳过连接点?)
然后,您可以使用 FOR 命令的变体来读取文本文件并为每个文件夹调用 MKDIR 命令。
使用 FOR /? 和 MKDIR /? 获得帮助。您需要启用 CMD 扩展。如有必要,请参阅 CMD /? 了解如何执行此操作。
请注意:FOR 的语法非常晦涩难懂,但如果使用得当,它可以产生一些令人惊奇的效果。
编辑:看到评论后(并且有一个方便检查语法的 Windows 框):
目录 /ad /b /s将获得一个简单的文件夹列表。
您必须在文本编辑器中编辑输出,以更改开头的驱动器号或在某处插入一些额外的文件夹级别。您必须在每行前后放置一个“,以正确处理带空格的路径。
然后像这样通过 FOR 运行它:
FOR /F "usebackq" %i IN (dir.txt) DO MKDIR %i
请注意:在批处理文件中使用 FOR 命令时(而不是交互方式),它要求您使用 %%i 而不是 %i。