The parameters /S, /U, /P and /E are very similar to the -S, -U, -P and -E ones from SSMS.exe (SQL Server Management Studio) with one distinction: there MUST be a space between each parameter and the value:

The default path for SSMS.exe is C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Ssms.exe, which is outside of the SQL Server binn directory.

ISQLW.exe is in the same directory as SQLCMD.exe and OSQL.exe (OSQL has been deprecated for ages, but SQL Server 2000 didn’t have SQLCMD.exe). I find the location of SQLCMD.exe (or OSQL.exe) using this batch file (that works for all SQL Server versions I tested so far):

@echo off
rem find the highest version of SQLCMD.EXE or OSQL.EXE and put it in the sqlcmd environment variable
rem this prefers SQLCMD.EXE over OSQL.EXE
set sqlcmd=
rem http://msdn.microsoft.com/en-us/library/ms178653.aspx
rem 80 = SQL Server 2000
rem 90 = SQL Server 2005
rem 100 = SQL Server 2008 and 2008 R2
rem 110 = SQL Server 2012
rem prefer the right-most element from the lists in the for loops
for %%d in ("%ProgramFiles%", "%ProgramFiles(x86)%") do for %%v in (80, 90, 100, 110) do for %%f in (OSQL, SQLCMD) do (
call :sqlcmdtest "%%~d\Microsoft SQL Server\%%v\Tools\Binn\%%f.EXE" %1
)
rem be carefull not to specify the .EXE in the %%f FOR loop-expression (above or below), otherwise it tries to dine SQLCMD.EXE and OQSL.EXE in the current directory
if !!==!%sqlcmd%! for %%f in (OSQL, SQLCMD) do (
call :find-on-path %%f.EXE
)
call :setSqlDir
if !%1!==!! echo SQLCMD: %sqlcmd%
if !%1!==!! echo SQLDIRECTORY: %sqldirectory%
goto :exit
:setSqlDir
:: ~dp does not work for regular environment variables
:: ~dp only works for batch file parameters and loop indexes
for %%d in (%sqlcmd%) do set sqldirectory="%%~dpd"
goto :exit
:find-on-path
set sqlcmd=%~f$PATH:1
if not ""=="%sqlcmd%" set sqlcmd="%sqlcmd%"
goto :exit
:sqlcmdtest
if exist %1 if !%2!==!! echo found %1
if exist %1 set sqlcmd=%1
:exit