Переименуйте файл jar, удалив номер версии - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь переименовать имя файла jar со встроенной в него версией, например, от test-java-1.0.0.jar до test-java.jar

Опробованный ниже подход, но это не будет работать, если версия будет изменена на что-то вроде

test-java-11.0.0.jar или test-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 ]

1 голос
/ 30 мая 2019

Этого должно быть достаточно

ren test-java*.jar test-java.jar
0 голосов
/ 30 мая 2019

Этот метод работает с удалением последней части имени файла, разделенного знаком hypen:

РЕДАКТИРОВАТЬ 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 part.

0 голосов
/ 30 мая 2019

Для удаления любых символов 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

powershell -Nop -C "Get-ChildItem *.jar|Rename-Item -NewName {$_.Basename.trimend('0123456789.-_')+$_.Extension} -WhatIf"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...