Вы можете сделать это согласно следующему командному сценарию:
@setlocal enableextensions enabledelayedexpansion
@echo off
set variable=2005060.png
echo !variable!
if "x!variable:~-4!"=="x.png" (
set variable=!variable:~0,-4!
)
echo !variable!
endlocal
Это выводит:
2005060.png
2005060
Волшебная линия, конечно, такова:
set variable=!variable:~0,-4!
удаляет последние четыре символа.
Если у вас есть файл testprog.in
со строками в нем, например:
2005060.png
1 2 3 4 5 leave this line alone.
2005070.png
2005080.png
2005090.png
, вы можете использовать небольшую модификацию:
@setlocal enableextensions enabledelayedexpansion
@echo off
for /f "delims=" %%a in (testprog.in) do (
set variable=%%a
if "x!variable:~-4!"=="x.png" (
set variable=!variable:~0,-4!
)
echo.!variable!
)
endlocal
, который выводит:
2005060
1 2 3 4 5 leave this line alone.
2005070
2005080
2005090
Просто имейте в виду, что он не будет выводить пустые строки (хотя он будет делать строки с пробелами на них).
Это может не быть проблемой, в зависимости от того, что разрешено в вашем входном файле.Если это проблема, я советую взять в руки CygWin или GnuWin32 (или Powershell, если он у вас есть на платформе) и использовать некоторые настоящие языки сценариев.