windows Win批处理文件-删除第一个文件扩展名

hk8txs48  于 12个月前  发布在  Windows
关注(0)|答案(2)|浏览(149)

在Windows中的批处理文件中使用rename命令是从目录中的所有文件中删除第一个文件扩展名的明确方法。例如

1.txt.png => 1.png 
2.txt.png => 2.png

字符串
现在我使用了两种有效的重命名方法。但在我看来,这些方法看起来很“脏”。

1方法。我不喜欢第一个方法,因为我执行了两次rename

rename *.txt.png *.
rename *.txt *.png

2方法,我不喜欢第二种方法,因为理论上“?”的字符数可以小于文件的基本名称(不带扩展名)。

rename *.txt.png ??????????????????????????????.png

?清除方法

我想运行像rename *.txt.png *.png这样的命令,但它不起作用。

ddarikpa

ddarikpa1#

下面是一个cmd命令,它将按照描述重命名文件。当您确信文件将被正确重命名时,请从Rename-Item命令中删除-WhatIf
如果您使用的是较旧的Windows PowerShell而不是PowerShell Core,请将pwsh更改为powershell

pwsh -NoLogo -NoProfile -Command ^
    "Get-Childitem -Filter '*.*.*' |" ^
        "ForEach-Object {" ^
            "if ($_.Name -match '(.*)\..*(\..*)') {" ^
                "Rename-Item -Path $_.FullName -NewName ($($Matches[1])+$($Matches[2])) -WhatIf" ^
            "}" ^
        "}"

字符串

km0tfn4u

km0tfn4u2#

@echo off

for %%A in ("*.txt.*") do call :SubRen "%%A"

pause
exit/b

:SubRen
set "Name=%~1"
if /I not "%Name%" == "%Name:.txt.=.%" ECHO ren "%Name%" "%Name:.txt.=.%"
if /I not "%Name%" == "%Name:.txt.=.%" ren "%Name%" "%Name:.txt.=.%"
exit/b

字符串

相关问题