The "&" is special to Kix only outside of strings. Inside, it can exist like any other char. It IS special in DOS as a command connector - "CMD1 & CMD2" will run command 1 and then command 2, while "CMD1 && CMD2" will run command 1, and run command 2 only if command 1 was successful. So - the escaping has to occur at the command string, not within kix.

Also - at the sake of repeating myself yet again, creating Shell commands in a monolithic manner makes things hard to diagnose. Build your commands step by step in a $Cmd string. First off, it's easier to keep pairs of quotes in sync when there's only one or two sets per line. Secondly, you can display the $Cmd string before you execute it with "Shell $Cmd" to verify that it looks correct. You can even copy the generated command string from the screen, put it into notepad and run it as a bat file to see what's failing. Here's a comparison of monolithic vs. segmented Shell command building:
 Code:

$ = SetOption('WrapAtEOL', 'On')

; defined as samples
$ADFind = 'adfind\'
$Domain = 'domain'
$Var1 = 'var1'
$Var2 = 'Var2'
$InputPath = 'inputpath\'
$Staff = 'OU="3WG-STAFF&AGENCIES"'

$Cmd = "%comspec% /c " + $adFind + "adfind.exe -b OU=3CPTS," + $Staff + ",OU=3WG,$Domain -csv -nodn -nocsvheader -tdcs -binenc -f $var1 $var2 > " + $inputPath + "3CPTS.csv"
'Monolithic: ' $Cmd ?

$Cmd = '%comspec% /c ' + $adFind + 'adfind.exe -b OU=3CPTS,' 
$Cmd = $Cmd + $Staff + ',OU=3WG,' + $Domain
$Cmd = $Cmd + ' -csv -nodn -nocsvheader -tdcs -binenc -f '
$Cmd = $Cmd + $var1 + ' ' + $var2 
$Cmd = $Cmd + ' > ' + $inputPath + '3CPTS.csv' 
' Segmented: ' $Cmd ?
;Shell $Cmd

Finally, I prefer single quotes within Kix, so that I can embed double quotes more easily. See the $Staff= definition above for an example. This may be what you need, since the quotes will escape the "&" properly.

Glenn
_________________________
Actually I am a Rocket Scientist! \:D