将文件复制到同一文件夹,但使用新名称

时间:2018-02-16 07:51:42

标签: batch-file cmd

问题似乎很简单,但我自己找不到解决方案。

我需要将文件复制到同一个文件夹,但名称不同。

这对我有用,但很明显,它不起作用:

for /f %%f in ("*.exe") do copy "%%f" "%%f_a"

当然,在此示例中,应手动创建“新建文件夹”。

这是我想要实现的目标:

C:\Test\foo.exe -> C:\Test\foo_a.exe
C:\Test\bar.exe -> C:\Test\bar_a.exe
C:\Test\baz.exe -> C:\Test\baz_a.exe

我尝试使用参数扩展程序as shown here,但目前没有运气。

1 个答案:

答案 0 :(得分:1)

这在PowerShell中很容易。使用System.IO.FileInfo成员构造所需的名称。如果您确信新名称是正确的,请从-WhatIf cmdlet中删除Copy-Item

Get-ChildItem -File -Filter '*.exe' |
    ForEach-Object {
        Copy-Item -Path $_.FullName `
            -Destination $($_.DirectoryName+'\'+$_.BaseName+'_a'+$_.Extension) -WhatIf
    }

如果必须在cmd.exe shell中运行此命令,请将PowerShell代码放在renexe.ps1等文件中,然后使用此命令运行它。

powershell -NoLogo -NoProfile -File renexe.ps1

如果您不希望或不允许继续使用PowerShell,可以使用cmd.exe来完成。如果您对COPY命令正确感到满意,请从中删除echo

FOR /F %%f IN ('DIR /B /A:-D "*.exe"') DO (
    echo COPY "%%~f" "%%~nf_a%%~xf"
)