我遇到的情况是,我想要一个 Windows 批处理文件从已知拓扑结构的文件夹中复制特定文件,但不知道确切的文件夹名称。因此,路径形式为
Inbox\XXX\YYY\file.txt
,其中 XXX 和 YYY 文件夹名称可以任意变化。我们可以假设子文件夹在两个级别都是唯一的(该位置没有其他子文件夹)。有什么办法吗?
我遇到的情况是,我想要一个 Windows 批处理文件从已知拓扑结构的文件夹中复制特定文件,但不知道确切的文件夹名称。因此,路径形式为
Inbox\XXX\YYY\file.txt
,其中 XXX 和 YYY 文件夹名称可以任意变化。我们可以假设子文件夹在两个级别都是唯一的(该位置没有其他子文件夹)。有什么办法吗?
命令执行程序
通配符只能用在路径的最后一个元素中。这意味着您不能对路径的不同文件夹使用两个通配符。我们必须通过其他方式遍历文件系统,cmd 中有
where /R
文件、文件夹for /D /R
和两者。不幸的是,cmd.exe 也没有命令替换,我们必须使用 for 循环来访问找到的路径:dir /S
为了不依赖于您的唯一性并防止意外存在的文件,我们可以在 .bat 脚本中完成复制后添加退出:
PowerShell
路径中的通配符得到很好的支持:
Bash/busybox
Bash 还支持通配符。在 Windows 上,它以约 660KB 的小型独立busybox形式提供: