Search code examples
scriptingmayamel

MEL error unterminated string, script for textures to change their strings


Recently i got into MEL programming to help out a few friends in maya. They wanted to have their files refferenced on a server, so i needed to change the reff strings. Now i have compiled a solution to do this, and used another example as a guide, but when i run the script it says // Error: int $nt=tokenize $TexturePath "\" $buff; // // Error: Line 12.43: Unterminated string. // What gives? p.s. full code below for anyone who wants to use it

string $SceneTextures[] = `ls -tex`; 
string $plus="";//Place a file type here to be saved in that subfolder

for ($i = 0; $i< (`size $SceneTextures`); $i++)
{
$Test = catchQuiet(`getAttr ($SceneTextures[$i] + ".fileTextureName")`); 
if ($Test == 0)
{ 

string $TexturePath = `getAttr ($SceneTextures[$i] + ".fileTextureName")`;
string $buff[];
int $nt=`tokenize $TexturePath "\\" $buff`;
string $newPath=("${ARC_SURF}\\" + plus + "\\" + $buff[$nt-3] + "\\" + $buff[$nt-2] + "\\" + $buff[$nt-1]);
setAttr -type "string" ($SceneTextures[$i] + ".fileTextureName") $NewPath;
catchQuiet (AEfileTextureReloadCmd ($SceneTextures[$i] + ".fileTextureName")); 
//print $TexturePath;
}//end if
}//end for i

EDIT: Fixed the code as it should be, now it only throws // Error: line 14: Invalid negative index used to reference array "$buff". But i think that probably only 1 texture screws stuff up, will check and report back


Solution

  • I'm no expert in MEL, but in many languages \ is used to escape control-sequences, so I would guess you want "\\" instead of "\", in the many places it appears.