SHIFT Changes the position of replaceable parameters in a batch program. Note: This command should be used as follows: Usually, you can send parameters to a batch file. Do it this way: BATCH.BAT [parameter1 [parameter2 [parameter3 [...]]]] BATCH --- the name of the batch file. Parameters should be seperated with spaces, and they should not contain spaces. But you can add quotation marks before and after a parameter to make it not to be seperated. The parameter, together with the quotation marks, will be sent to the batch program. You can see this: ------ TEST.BAT ----- @echo off if '%1==' goto a echo %1 goto end :a echo "Hello :end ---- END OF FILE ---- Try these commands after the file has been created: C:\>TEST "Hello C:\>TEST 1 1 1 C:\>TEST "1 1" "1 1" Now let's talk about the usage of [%n] and the usage of the command SHIFT. %0 represents the command that started the program itself. It is rather the first parameter of the command line. That is, if you run "test", %0 will be "test". If you run "test.bat", %0 will be "test.bat". After SHIFT is used, there will be these changes. Now, %0 is equal to previous (before the application of the command SHIFT) %1. And, every %n-1 is equal to previous %n. That's the use of the command SHIFT. For more information, please refer to MS-DOS Help or Windows NT command line command help.