提问人:tecdoc ukr net 提问时间:11/14/2023 更新时间:11/16/2023 访问量:74
Win Batch File - 删除第一个文件扩展名
Win Batch File - Remove First File Extension
问:
在 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
?Clear 方法
我想运行一个这样的命令,但它不起作用。rename *.txt.png *.png
答:
1赞
lit
11/14/2023
#1
下面是一个命令,它将按照描述重命名文件。当您确信文件将被正确重命名时,请从命令中删除。cmd
-WhatIf
Rename-Item
如果使用的是较旧的 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" ^
"}" ^
"}"
0赞
OJBakker
11/16/2023
#2
@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
评论
for /F "eol=| delims=" %I in ('dir /B /A:-D-H-S "*.txt.png"') do for %J in ("%~nI") do ren "%~I" "%~nJ%~xI"
%
rename
rename
?