Page 1 of 1

Batch Rename file using Dos Left Function

Posted: 07 Dec 2009 12:50
by Kris.Mitchell
I am using a batch file with ImageMagick to convert pictures from one format to another.

I only need to run the program for the files in the directory.

I can't get the variable b to be a:0,-4

It ends up printing to the screen as b:0,-4.

Code: Select all

for %%a in (*.ps) DO (
SET b=%%a:~0,-4!
convert -density 288 %%a +matte -resize 50%% %b.jpg
echo %b%
)


Thanks for the help.

-Kris

Posted: 07 Dec 2009 20:21
by DosItHelp
Kris.Mitchell,

To get the name of a file without extension simply use "substitution of FOR variable references" like this:

Code: Select all

@echo off
for %%A in (*.*) DO (
    echo.convert -density 288 "%%A" +matte -resize 50%% "%%~nA.jpg"
)

Type "FOR /?" on a command line to read more, or go here: http://www.dostips.com/DosCommandIndex.htm#FOR


If however you want to use the "left string" then you could do it like this:

Code: Select all

@echo off
Setlocal enabledelayedexpansion
for %%a in (*.*) DO (
    set b=%%a
    set b=!b:~0,-4!
   
    echo.convert -density 288 "%%a" +matte -resize 50%% "!b!.jpg"
)

DosItHelp? :wink:

Posted: 08 Dec 2009 07:49
by Kris.Mitchell
it DOSe help! :)

I have one last issue though.

I have a space between b and the .jpg extention.

So I tried :idea:

Code: Select all

FOR /L !b! IN (1,1,10)

and

FOR /L %%b IN (1,1,10)


just in case there were more than one space

as well as

Code: Select all

SET b=!b:~0,-1! 

and

Set b=%b:~0,-1%


I ended up with funky filenames each go around.

This should be the last piece to the puzzle. Thank you again for the help.

-Kris

Posted: 10 Dec 2009 07:31
by Kris.Mitchell
I don't know if this was really the solution, but I've tested it (and for me at least) I found the error.

When running the script from above,

using filename 1234.A.1.ai.ps

and running the script I got something like 1234.A.1 .jpg

I found that I actually had spaces between commands in the file. I, again am not sure, but it's possible that they were interpeted as carage returns and/or spaces.

I butted everything up to each other and then gave it spacing and it seems to work without adding extra spaces.

I hope this helps someone in the future.

-Kris