Skip to main content
GameDev.net gamedev.net
🔒 Locked

About bat files

Started by belfegor Dec 20, 2012 at 6:09 PM 3 replies 1.4k views
Original Post
belfegor
belfegor
I downloaded nvidia texture tools command line utilites to be able to convert some textures to "bump maps". The problem is that it will take to long to do it by hand for all images, so i tried to automate it with bat, but my knowledge for command line sintaks is limited:


for %%X in (*.dds) do nvcompress -tonormal %%X %%X_bump.dds

Last parameter is out file name.

If i have input images in that directory:

Image1.dds
Image2.dds
Image3.dds


Output will be:

Image1.dds_bump.dds
Image2.dds_bump.dds
Image3.dds_bump.dds


But i want to remove first extension so that output would be:

Image1_bump.dds
Image2_bump.dds
Image3_bump.dds


Help.

Thank you for your time.

EDIT: Solved. Last param should be:

%%~nX_bump.dds
fastcall22
fastcall22
Windows Vista or later? Learn and use PowerShell. It's seriously amazing:

get-childitem '*.dds' | foreach-object {
& .\nvcompress -tonormal $_.Name $_.Name "$($_.Name)_bump.dds"
}


Works with .NET, so you can load almost every assembly and directly work with it in PowerShell.

tstrimp
tstrimp

Windows Vista or later? Learn and use PowerShell. It's seriously amazing:


And seriously verbose! It's very painful to use from the command line, but it's great for scripting tasks.
fastcall22
fastcall22

And seriously verbose! It's very painful to use from the command line, but it's great for scripting tasks.

It doesn't need to be verbose; that's what aliases are for:
ls *.dds |%{$a=$_.Name;&.\nvcompress -tonormal $a $a "$($_.FullName)_bump.dds")}
Sik_the_hedgehog
Sik_the_hedgehog
Ow, that reminds me of Unix shells (though those are still worse when it comes to legibility).
Don't pay much attention to "the hedgehog" in my nick, it's just because "Sik" was already taken =/ By the way, Sik is pronounced like seek, not like sick.

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.