New
#11
Hey JDobbsy1987, kind of sloppy/clunky, but instead of renaming with the same extension go with something different, that way you could run it on a folder full of files. When it's done you run code to correct the extension.
Hey JDobbsy1987, kind of sloppy/clunky, but instead of renaming with the same extension go with something different, that way you could run it on a folder full of files. When it's done you run code to correct the extension.
It is a little clunky at the moment but as i said in earlier posts, these commands were just to get the rename command to work correctly within the command window (not a batch file), now i have that all i need to do is create a new command with a for loop that will replace the previous commands mentioned in this thread. once i have done that it will not be clunky... just a standard batch file.
Why run a 2nd command to correct the file extension when the first command can do it at the same time, we know that files that need renaming are PDF's?
That is not the issue, this issue is just putting the rename command in a loop... nothing to do with the file extension.
I have nearly got the for loop working by the way
I'm glad this is what you are after, I nearly have the loop working, hopefully i will have this back to you by tomorrow evening (well this evening as it's past midnight )
You are correct about the below code
~0 = Remove the first n letters (we don't want to remove any hence 0)Code:ren %fName% %fName:~0,-11%.txt
,-11 = Remove the last n letters
Regards,
JDobbsy1987
Hey JDobbsy1987,
Sorry I wasn't clear, I meant my addition would be sloppy/clunky, not yours.
Everytime I've gone and looked at batch files I've written over the years, I think "you know, I really could wipe out a few lines here and there and be more efficient just by modifying a couple other lines".
I thought you were having problems with a working, but never ending command. I was thinking you were looking for a way to stop the loop at the right moment.
OK Jim...
I have now got the script to work, 2 batch files are required for it.
All the .PDF's will need to be put in a folder for it to work (obviously if you can change the script to look in different folders then go for it
Please put a copy of a few PDF's into a folder to test the following:
First you need to create the 2 batch files:
Make batch file called "RunMe.bat" with the following code:
Now create a batch file called "ReName_File.bat" with the following code:Code:dir /b | find "pdf" /i > temp.log set tempvar= for /f "tokens=1-2 delims=." /f %%A in (temp.log) do ( rename_file.bat %%A %%B ) del temp.log
Put the 2 batch files in the folder with the test pdf's and then double click the RunMe.batCode:set fName=%1 ren %fName%.%2 %fName:~0,-7%.%2
It may take a second but all the files should now have the last 7 digits removed?
Please advise how you get on.
Sorry it has taken so long to get to the bottom of it
Regards,
JDobbsy1987
Brilliant, JDobbsy1987! I really appreciate your putting in all this time to help me.
Just for my education, and not trying to be a know-it-all, but it seems strange to have to run two separate batch files, rather than one with function calls. Can you explain why the former is better? (Easier counts as better in my book, even if it's less elegant, since you're doing this out of the goodness of your heart, after all.)
If you have the further time and inclination to walk me through these scripts, step by step, so I'll understand how they work, I'll be even more grateful--because I realize it wouldn't be all that much trouble for me to educate myself about all this, and you've already done a lot. It's not clear to me, e.g., since you don't have an "IF" or a "FOREACH" (which I don't think DOS recognizes), how the script knows to stop running after it's renamed each file once, and not keep going until all the files have names of less than seven characters. So if you feel like educating me as well as helping me out, please do.
I do like the way you got around having to restore the file suffix, by the way, and I think I even understand how you did it. I knew there must be a way.
I'll give these a try when I get home tonight (don't want to try them at work yet, because the firm has very strict IT policies, and I want to be able to say that I've tried them at home, and they work, when I ask permission to run them at the office).
Thanks again, JDobbsy1987. You're a champ.
Regards,
Jim Crutchfield
Hi Jim,
It's not a problem, the reason i have 2 batch files is it's to do with how loops deal with variables and the order the commands are run in the stack (it may be possible to get it to run in a single batch file but much easier {for me} to get it split over 2 although I'm not actually sure it is possible to do this is a single command/batch file due to the rename variable).
You don't need to specify the file extension in the script as the for loop uses a delimiting character to split it into two variables (%%A and %%B) with A being the file name, and B being the extension.
Both of those are then loaded into rename_file.bat as %1 and %2 respectively. It works this way because rename_file.bat is called for each loop, and when it finished its two lines, it closes, and therefore removes the fName variable so it can be reused by the next loop.
I hope his helps understand it a little more.
Regards,
JDobbsy1987
That helps a lot. Can't wait to try 'em out. I'd thank you again, but I might be starting to sound a bit effusive. ;0)