Ok... It doesn't. To access the command line parameters from within a shell script, you have to use a different variable than "%1". Still construct your BAT file the same way, using the "%1" anywhere you would, but in the WSH script, you need to call it using the special WScript.Arguments.Item(x) variable.
Because the the special variable is based on an object called a "collection" which are Zero based, you want to use 0 in the parenthesis (replacing X in the above line) to reference command line argument #1, and 1 to reference #2, and 2 to reference #3, and so on and so forth. If this doesn't make sense, just understand that when referring to the arguments in WSH scripts, argument one is really called zero, two is called one, three is called two, and so on and so forth.
So, to pass the first command line argument to a BAT script that uses only 1 argument you'd use:
<package>
<job id="vbs">
<script language="VBScript">
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "C:\temp\scripts\test\test_bat.bat " & WScript.Arguments.Item(0), 0, False
</script>
</job>
</package>
Make sure to note the space before the " after test_bat.bat in the above example. This is required or the command line "sent" would all run together. If you needed two command line arguments, you could use:
<package>
<job id="vbs">
<script language="VBScript">
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "C:\temp\scripts\test\test_bat.bat " & WScript.Arguments.Item(0) & " " & WScript.Arguments.Item(1), 0, False
</script>
</job>
</package>
And so on. (In the above example, the & " " & is needed so that there will be a space separating the arguments sent to the batch file.)