![我可以查看目录的子目录并将特定扩展名的文件复制到新文件夹吗?](https://linux22.com/image/1595495/%E6%88%91%E5%8F%AF%E4%BB%A5%E6%9F%A5%E7%9C%8B%E7%9B%AE%E5%BD%95%E7%9A%84%E5%AD%90%E7%9B%AE%E5%BD%95%E5%B9%B6%E5%B0%86%E7%89%B9%E5%AE%9A%E6%89%A9%E5%B1%95%E5%90%8D%E7%9A%84%E6%96%87%E4%BB%B6%E5%A4%8D%E5%88%B6%E5%88%B0%E6%96%B0%E6%96%87%E4%BB%B6%E5%A4%B9%E5%90%97%EF%BC%9F.png)
新手在这里-我有这个终端脚本,它似乎无法在 Windows 上运行,无法在目录中的子目录中搜索具有特定扩展名的所有文件并将它们移动到新目录。
find ./ -name '*.xlsx' -exec cp -prv '{}' \Documents\...' ";"
我想知道是否可以使用 MATLAB 或 Windows 脚本中的任何其他方式完成相同的操作。我的最终目标是将所有这些 xlsx 文件中的数据合并到一个文件中。提前感谢您的帮助。
答案1
要在 cmd.exe 中循环遍历目录:
for /r "C:\Your\Directory" %A in (*.xlsx) do (move /y "%A" "C:\New\Directory\%~nxA")
/r
in循环FOR
遍历给定目录中的所有文件。in/y
会move
隐藏询问您是否可以移动文件的提示。如果文件/目录路径中有空格,最好使用引号。默认情况下,这将循环遍历子文件夹。
参考:FOR 循环命令
如果您喜欢批处理解决方案,我更喜欢使用如下变量进行设置:
@echo off
set "old=C:\Your\Directory"
set "new=C:\New\Directory"
for /r "%old%" %%A in (*.xlsx) do (
move /y "%%A" "%new%\%%~nxA"
)
pause
我认为,批处理与普通命令行的主要区别在于,您可以返回并编辑变量,而无需在同一文件中多次更改路径,因此调整起来更容易一些。还请注意,批处理文件中的参数%A
会发生变化。%%A