'Remove Last Characters from my filenames in windows
Im quite new to batch programming and i wanted to remove the last characters on my filename.
10_myfile_12345_6789.txt
11_myfile_12345_0987.txt
I want to remove the last 4 digits on my filename how i could do that?
I have tried this
@echo off
setlocal enabledelayedexpansion
set X=3
set FOLDER_PATH=
pushd %FOLDER_PATH%
for %%f in (*) do if %%f neq %~nx0 (
set "filename=%%~nf"
ren "%%f" "!filename!%%~xf"
)
popd
PAUSE
but it removes on first and last characters, i only saw this here too, im still quite confused how this works
Solution 1:[1]
With your recent clarification - I would do the following.
@echo off
setlocal enabledelayedexpansion
set FOLDER_PATH=C:\Some\Path\
for %%f in (%FOLDER_PATH%*) do if %%f neq %~nx0 (
set "filename=%%~nf"
ren "%%f" "!filename:~0,-4!%%~xf"
)
PAUSE
This will change your examples
10_myfile_12345_6789.txt
11_myfile_12345_0987.txt
Into
10_myfile_12345_.txt
11_myfile_12345_.txt
If you want to remove the trailing _
simply change !filename:~0,-4!
to !filename:~0,-5!
. This is simple string manipulation.
Solution 2:[2]
::working script to rename + remove suffix
::fixed problem file is not found while rename.
@echo off
set /a count = 0
for %%i in ("*.ts") do (set fname=%%i) & call :rename
goto :eof
:rename
::template name ==> names__1xxx.ts
::to rename the begin change zero to something
set name=%fname:~0,-8%
set /a count=count+1
::by random or count i bypass the problem of file not found while rename
ren "%fname%" "%name%_%count%.ts`
Results :
before : names__1xxx.ts
after : names__1.ts
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | |
Solution 2 | Dmitry K. |