Batch file rename?

  • Thread starter Thread starter Justin
  • Start date Start date
J

Justin

I have a client with a BUNCH of files. Hundreds. The first name with
an underscore then the last name dot jpg. Is there a way to get it
from henry_smith.jpg to smith_henry.jpg? Any sort of batch program?
 
Justin said:
I have a client with a BUNCH of files. Hundreds. The first name with
an underscore then the last name dot jpg. Is there a way to get it
from henry_smith.jpg to smith_henry.jpg? Any sort of batch program?

Of course! Anything worth doing can be done in batch.

(see alt.msdos.batch.nt for nt/2k/xp methods; alt.msdos.batch for DOS/9x
methods and microsoft.public.win2000.cmdprompt)

As for your problem :-

for /f %%i in ('dir /a:-d/b *_*.jpg') do for /f "tokens=1,2delims=_." %%j in
("%%i") do ECHO ren %%i %%k_%%j.jpg

(all as one batch line. Reduce each "%%" to "%" if executed directly from
the prompt)
(the "ECHO" command is included for you to verify that the operation is
kosher. remove the "ECHO" to execute the rename)

HTH

....Bill
 
billious said:
Of course! Anything worth doing can be done in batch.

(see alt.msdos.batch.nt for nt/2k/xp methods; alt.msdos.batch for DOS/9x
methods and microsoft.public.win2000.cmdprompt)

As for your problem :-

for /f %%i in ('dir /a:-d/b *_*.jpg') do for /f "tokens=1,2delims=_." %%j in
("%%i") do ECHO ren %%i %%k_%%j.jpg

(all as one batch line. Reduce each "%%" to "%" if executed directly from
the prompt)
(the "ECHO" command is included for you to verify that the operation is
kosher. remove the "ECHO" to execute the rename)

HTH

...Bill


DOH!

It turns out that won't work. The client has somethign else which he
neglected to tell me.
example richard_parks_123.jpg
has to end up parks_richard_123.jpg the 123 is a variable number of
digits. Grrr... I'm adding another two hours to this guy's bill.
 
Justin said:
DOH!

It turns out that won't work. The client has somethign else which he
neglected to tell me.
example richard_parks_123.jpg
has to end up parks_richard_123.jpg the 123 is a variable number of
digits. Grrr... I'm adding another two hours to this guy's bill.

Two hours billing for a 5 minute change to a batch file someone else
wrote for you for free?

Remind me not to hire you!
 
Justin said:
SNIP<
It turns out that won't work. The client has somethign else which he
neglected to tell me.
example richard_parks_123.jpg
has to end up parks_richard_123.jpg the 123 is a variable number of
digits. Grrr... I'm adding another two hours to this guy's bill.

You can program in Perl on a windows PC. In Linux, I would do

#!/usr/bin/perl -w
opendir(DIR,'./your_directory/') or die;
@bar = readdir(DIR);
foreach $file (@bar) {
if (-d $file) {
#skip the dots
} else {
@names=split('_',$file);
# now you have the file name in $names[0]='parks'
$names[1]='richard'
$names[2]='123.rpg'

So, if you want to reverse the name,

move or copy

system("mv $file $names[1]_$names[0]_$names[2]");
}
}

Oh, you definitely want to have the correct path information in that
system call to mv.

HTH,

Andy C.(never #)
 
Armin said:
Two hours billing for a 5 minute change to a batch file someone else
wrote for you for free?

Remind me not to hire you!

Figure of speech. Its routine that clients don't give me all the
information, then when I try somethign it doesn't work so its my fault.
If only I were a Betaziod...
 
Justin said:
DOH!

It turns out that won't work. The client has somethign else which he
neglected to tell me.
example richard_parks_123.jpg
has to end up parks_richard_123.jpg the 123 is a variable number of
digits. Grrr... I'm adding another two hours to this guy's bill.

for /f %%i in ('dir /a:-d/b *_*.jpg') do for /f "tokens=1,2,3delims=_." %%j
in ("%%i") do if /i "%%l"==".jpg" (echo ren %%i %%k_%%j.jpg) else (echo ren
%%i %%k_%%j_%%l.jpg)

(still one line...)

I'd send you my virtual bill too...been out-of-work more than 4 years now
.... :(

....Bill - or not :)
 
Justin said:
I have a client with a BUNCH of files. Hundreds. The first name with
an underscore then the last name dot jpg. Is there a way to get it
from henry_smith.jpg to smith_henry.jpg? Any sort of batch program?

Take a look at IrfanView (www.irfanview.com). IIRC, it has a bulit-in
batch renaming facility that may do what you want. Even if it doesn't,
it's a great, free, graphics file viewer.
 
billious said:
for /f %%i in ('dir /a:-d/b *_*.jpg') do for /f "tokens=1,2,3delims=_." %%j
in ("%%i") do if /i "%%l"==".jpg" (echo ren %%i %%k_%%j.jpg) else (echo ren
%%i %%k_%%j_%%l.jpg)

(still one line...)

I'd send you my virtual bill too...been out-of-work more than 4 years now
... :(

...Bill - or not :)


I'll send virtual money... Just kidding.
That seems to have worked, I tried it on my system and it worked fine.
Now I'm sending it to the technically inept client.
 
Back
Top