【发布时间】:2014-09-11 17:00:53
【问题描述】:
我需要复制一个目录[包括子文件夹]下的所有.TXT文件并将它们复制到另一个目录[没有子文件夹],但是我复制它们后无法更改文件的扩展名,例如@987654322 @ 或 .TXT.OLD。可以通过 .bat 文件来实现吗?有什么特殊的工具可以代替吗?
【问题讨论】:
标签: windows batch-file batch-processing
我需要复制一个目录[包括子文件夹]下的所有.TXT文件并将它们复制到另一个目录[没有子文件夹],但是我复制它们后无法更改文件的扩展名,例如@987654322 @ 或 .TXT.OLD。可以通过 .bat 文件来实现吗?有什么特殊的工具可以代替吗?
【问题讨论】:
标签: windows batch-file batch-processing
考虑改用powershell:
Get-ChildItem C:\path\to\root\dir -recurse | where {$_.extension -eq ".txt"} | % {Copy-Item $_.FullName -Destination C:\path\to\target\dir}
【讨论】:
您只需要使用文件名的根部分,然后在重命名中附加您自己的扩展名。例如,为了证明 (你并没有说你对实际流程的逻辑有任何问题,只是扩展操作,所以这就是我要解决的问题):
FOR %%I IN (*.txt) DO REN %%I %%~nI.txt.old
这将获取当前目录中的所有*.txt 文件并将它们重命名为相同的根+ 扩展名.txt.old。可能会出现复杂情况,即生成的文件名不能已经存在于重命名中,因此您可能希望将其放入更复杂的循环中,例如:
FOR %%I IN (*.txt) DO (
[do other stuff here]
IF EXIST %%~nI.txt.old DEL %%~nI.txt.old
REN %%I %%~nI.txt.old
)
在命令提示符下尝试for /?,并查看它的最后一部分以了解文件名/路径替换参数的语法
【讨论】: