.Bat文件复制txt文件而不更改扩展名?

时间:2014-09-11 17:00:54

标签: windows batch-file batch-processing

我需要复制目录[包含的子文件夹]下的所有.TXT文件并将它们复制到另一个目录[没有子文件夹]但是我复制它们后无法更改文件的扩展名,例如.OLD.TXT.OLD。这可以通过.bat文件来完成吗?是否有使用的特殊工具?

2 个答案:

答案 0 :(得分:0)

请考虑使用

Get-ChildItem C:\path\to\root\dir -recurse | where {$_.extension -eq ".txt"} | % {Copy-Item $_.FullName -Destination C:\path\to\target\dir}

答案 1 :(得分:0)

您只需要使用文件名的根部分,然后在重命名中附加您自己的扩展名。例如,为了演示(你没有说你对实际过程的逻辑有任何问题,只是扩展操作,这就是我正在解决的问题)

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 /?并查看文件的最后一部分,了解文件名/路径替换参数的语法