重命名jar文件,删除版本号

时间:2019-05-30 14:39:03

标签: batch-file

我正在尝试使用其中嵌入的版本来重命名jar文件名称 test-java-1.0.0.jartest-java.jar

尝试以下方法,但是如果版本更改为

,则此方法将不起作用

test-java-11.0.0.jartest-compile-1.0.12.jar

Set test=test-java-1.0.0.jar
set test1=%test:~0,-10%
rename %test% %test1%.jar

寻找类似的东西

输入字符串:test-java-1.0.0.jar

预期输出:test-java.jar

3 个答案:

答案 0 :(得分:1)

这应该足够了

ren test-java*.jar test-java.jar

答案 1 :(得分:0)

要从文件名的末尾去除任何字符0-9.-_,而无需扩展名:

:: Q:\Test\2019\05\30\SO_56380430.cmd
@Echo off
for %%A in (
    "test java-1.0.0.jar"
    compile-java-1.11.1.jar
    poc-java-1.2.22.jar
    some-thing-1.2.32.jar
) do call :StripVer "%%~A"

Goto :Eof

:StripVer
set "Name=%~n1"
:loop
Echo %Name:~-1%|findstr "[0-9._-]" >Nul && (set "Name=%Name:~0,-1%"&Goto :loop)
Echo Original name : %~1
Echo w/o version   : %Name%%~x1
Echo:

示例输出:

> Q:\Test\2019\05\30\SO_56380430.cmd
Original name : test java-1.0.0.jar
w/o version   : test java.jar

Original name : compile-java-1.11.1.jar
w/o version   : compile-java.jar

Original name : poc-java-1.2.22.jar
w/o version   : poc-java.jar

Original name : some-thing-1.2.32.jar
w/o version   : some-thing.jar

这种方法很慢。

PowerShell中的一个衬里将更快。

Get-ChildItem *.jar|Rename-Item -NewName {$_.Basename.trimend('0123456789.-_')+$_.Extension} -WhatIf

如果输出看起来正常,请删除结尾的-WhatIf

可以将其包装在cmd行/ batch文件中

powershell -Nop -C "Get-ChildItem *.jar|Rename-Item -NewName {$_.Basename.trimend('0123456789.-_')+$_.Extension} -WhatIf"

答案 2 :(得分:0)

此方法可删除以连字符分隔的文件名的最后一部分

编辑2019/05/31 支持添加了空格的文件名

@echo off

for %%f in (
  test-java-1.0.0.jar
  compile-java-1.11.1.jar
  poc-java-1.2.22.jar
  compile-java-code-1.11.1.jar
  poc-java-compile-1.2.22.jar
  some-thing-like-1.2.32.jar
  "test java-1.0.0.jar"
  "compile java test-1.2.22.jar"
) do call :Rename %%f
goto :EOF


:Rename name

setlocal EnableDelayedExpansion
set "old=%~1"
set "new=" & set "x=%old:-=" & set "new=!new!-!x!" & set "x=%"
echo REN "%old%" "%new:~1%.jar"
exit /B

示例输出:

REN "test-java-1.0.0.jar" "test-java.jar"
REN "compile-java-1.11.1.jar" "compile-java.jar"
REN "poc-java-1.2.22.jar" "poc-java.jar"
REN "compile-java-code-1.11.1.jar" "compile-java-code.jar"
REN "poc-java-compile-1.2.22.jar" "poc-java-compile.jar"
REN "some-thing-like-1.2.32.jar" "some-thing-like.jar"
REN "test java-1.0.0.jar" "test java.jar"
REN "compile java test-1.2.22.jar" "compile java test.jar"

要真正重命名文件,请在echo部分之前删除REN命令。