Hi,
I am facing problem to rename file name using batch script.
Suppose in one folder I have many CSV files
e.g. PF.DL5107.ACE.ACEJR.123949.20100618.124546.csv
PF.DL6224.MNO.SCEJR.245890.20100625.127890.csv
Now I have to create batch script which will rename files which are in this folder. New file name should be as follows.
PF.ACE.ACEJR.DL5107.123949.20100618.124546.csv
PF.MNO.SCEJR .DL6224.245890.20100625.127890.csv
Please help me out.
Thanks in advance.
Regards,
Ritesh
interchange filename character from batch
Moderator: DosItHelp
Re: interchange filename character from batch
Try something like that
But be careful! The parts of the file names are rotating each time you'll run the batch. Better you move the renamed files to another folder.
Regards
aGerman
Code: Select all
@echo off &setlocal
for /f "delims=" %%a in ('dir /a-d /b *.csv') do (
set "oldname=%%~na"
call :proc
)
pause
goto :eof
:proc
for /f "delims=. tokens=1-7" %%a in ("%oldname%") do (
ren "%oldname%.csv" "%%a.%%c.%%d.%%b.%%e.%%f.%%g.csv"
)
goto :eof
But be careful! The parts of the file names are rotating each time you'll run the batch. Better you move the renamed files to another folder.
Regards
aGerman
-
- Posts: 4
- Joined: 26 Jun 2010 02:18
Re: interchange filename character from batch
Thanks a lot for your quick response.
I edited your script little bit to point correct folder. This batch script is in folder E:\ETL\ECF2\CSV_FileRename and csv files are in E:\ETL\ECF2\Report_OutPut_BK\24.06.2010 folder. When I am trying to run this script then it is not working and gives error like system can not find files. If I place batch script and csv files in same folder then it is working.
Hope you will guide me to sort out this issue as well.
for %%a in (E:\ETL\ECF2\Report_OutPut_BK\24.06.2010\*.csv) do (
set "oldname=%%~na"
call :proc
)
pause
goto :eof
:proc
for /f "delims=. tokens=1-7" %%a in ("%oldname%") do (
ren "%oldname%.csv" "%%a.%%c.%%d.%%b.%%e.%%f.%%g.csv"
)
goto :eof
Regards,
Ritesh Kumar
I edited your script little bit to point correct folder. This batch script is in folder E:\ETL\ECF2\CSV_FileRename and csv files are in E:\ETL\ECF2\Report_OutPut_BK\24.06.2010 folder. When I am trying to run this script then it is not working and gives error like system can not find files. If I place batch script and csv files in same folder then it is working.
Hope you will guide me to sort out this issue as well.
for %%a in (E:\ETL\ECF2\Report_OutPut_BK\24.06.2010\*.csv) do (
set "oldname=%%~na"
call :proc
)
pause
goto :eof
:proc
for /f "delims=. tokens=1-7" %%a in ("%oldname%") do (
ren "%oldname%.csv" "%%a.%%c.%%d.%%b.%%e.%%f.%%g.csv"
)
goto :eof
Regards,
Ritesh Kumar
-
- Posts: 4
- Joined: 26 Jun 2010 02:18
Re: interchange filename character from batch
I have incorporated your script into my script which is given below. This script replace underscore (-) to dot (.) from filename and add prefix (PF.)
After completion of this process your script comes into picture which interchange character.
Finally I move these files into date wise archive folder.
Please look into this script. Move part is not working as a part of this script (individually move code is working)and whole script works when script and csv files are in same folder.
Your precious advice will help me out from this problem.
@echo off
setlocal enabledelayedexpansion
for %%j in (E:\ETL\ECF2\Report_OutPut_BK\24.06.2010\*.csv) do (
set filename=%%~nj
set filename= PF.%%~nj
set filename=!filename:_=.!
if not "!filename!"=="%%~nj" ren "%%j" "!filename!%%~xj"
)
for %%a in (E:\ETL\ECF2\Report_OutPut_BK\24.06.2010\*.csv) do (
set "oldname=%%~na"
call :proc
)
goto :eof
:proc
for /f "delims=. tokens=1-7" %%a in ("%oldname%") do (
ren "%oldname%.csv" "%%a.%%c.%%d.%%b.%%e.%%f.%%g.csv"
)
goto :eof
Set folder=%Date:~-10,10%
Set folder=%folder:/=-%
mkdir E:\ETL\ECF2\Report_OutPut_BK\24.06.2010\Report_With_NewFileName\%folder%
if exist E:\ETL\ECF2\Report_OutPut_BK\24.06.2010\*.csv goto MOVEFILE
:MOVEFILE
move E:\ETL\ECF2\Report_OutPut_BK\24.06.2010\*.csv E:\ETL\ECF2\Report_OutPut_BK\24.06.2010\Report_With_NewFileName\%folder%
if not exist E:\ETL\ECF2\Report_OutPut_BK\24.06.2010\*.csv goto END
:END
Thanks & regards,
Ritesh Kumar
After completion of this process your script comes into picture which interchange character.
Finally I move these files into date wise archive folder.
Please look into this script. Move part is not working as a part of this script (individually move code is working)and whole script works when script and csv files are in same folder.
Your precious advice will help me out from this problem.
@echo off
setlocal enabledelayedexpansion
for %%j in (E:\ETL\ECF2\Report_OutPut_BK\24.06.2010\*.csv) do (
set filename=%%~nj
set filename= PF.%%~nj
set filename=!filename:_=.!
if not "!filename!"=="%%~nj" ren "%%j" "!filename!%%~xj"
)
for %%a in (E:\ETL\ECF2\Report_OutPut_BK\24.06.2010\*.csv) do (
set "oldname=%%~na"
call :proc
)
goto :eof
:proc
for /f "delims=. tokens=1-7" %%a in ("%oldname%") do (
ren "%oldname%.csv" "%%a.%%c.%%d.%%b.%%e.%%f.%%g.csv"
)
goto :eof
Set folder=%Date:~-10,10%
Set folder=%folder:/=-%
mkdir E:\ETL\ECF2\Report_OutPut_BK\24.06.2010\Report_With_NewFileName\%folder%
if exist E:\ETL\ECF2\Report_OutPut_BK\24.06.2010\*.csv goto MOVEFILE
:MOVEFILE
move E:\ETL\ECF2\Report_OutPut_BK\24.06.2010\*.csv E:\ETL\ECF2\Report_OutPut_BK\24.06.2010\Report_With_NewFileName\%folder%
if not exist E:\ETL\ECF2\Report_OutPut_BK\24.06.2010\*.csv goto END
:END
Thanks & regards,
Ritesh Kumar
Re: interchange filename character from batch
Untested:
Regards
aGerman
Code: Select all
@echo off &setlocal
pushd "E:\ETL\ECF2\Report_OutPut_BK\24.06.2010"
Set "folder=%Date:~-10,10%"
Set "folder=E:\ETL\ECF2\Report_OutPut_BK\24.06.2010\Report_With_NewFileName\%folder:/=-%"
mkdir "%folder%"
for %%a in (*.csv) do (
set "oldname=%%~na"
call :proc
)
popd
goto :eof
:proc
for /f "delims=._ tokens=1-6" %%a in ("%oldname%") do (
move "%oldname%.csv" "%folder%\PF.%%b.%%c.%%a.%%d.%%e.%%f.csv"
)
goto :eof
Regards
aGerman
-
- Posts: 4
- Joined: 26 Jun 2010 02:18
Re: interchange filename character from batch
Thanks a lot. Script is working fine.
Regards,
Ritesh Kumar
Regards,
Ritesh Kumar