I am trying to write a script to replace old files content with new files content which is appearing in the following format:
Old file : something.txt
New file : something.txt.new
Old file need to replaced with New file contents
New File name to be rename without new
Old file need to be deleted
Below script is not working :Could you please rewrite:
@echo off
setlocal enabledelayedexpansion
set FOLDER_PATH=D:\test
for %%f in (%FOLDER_PATH%*) do if %%f neq %~nx0 (
set basename=test
ren *.txt.new !basename!.txt
)
PAUSE
i have many files in folder and need to iterate through each file,only i need is basename variable need to be filled with the name of the old file name in each iteration
Invalid question Invalid answer
source 1
source 2
or
Note that operational
move
(del
andrename
) commands are merelyECHO
ed for debugging purposes.Also note that
if "%%~ff" neq "%~f0"
could be omitted iterating*.new
files as%~f0
has an extension of.bat
or.cmd
(tryecho %~x0 %~f0
).Resources (required reading):
%~ff
etc. special page) Command Line arguments (Parameters)>
,2>&1
etc. special page) Redirection\
in%FOLDER_PATH%\*
.*.new
files only, so why not using this pattern rather than*
? If you are interested in files matching the pattern*.txt.new
, then specify this instead of*
.basename
; simply use%%~nf
to remove the (last) suffix (.new
).ren
command throws an error in case the target file already exists; since you want it to be overwritten, usemove /Y
instead. Add> nul
to hide the summary1 file(s) moved.
.if
query after having resolved item 2.All in all, your script can be reduced to: