対応方法

バッチファイルから ini ファイルを読込む場合 VBS を使用することで実現する
具体的には、バッチファイルから VBS を呼び出して ini ファイルより値を取得して VBS から戻り値を受け取り、実現する

取得する ini ファイルの中身

<設定値>*****************************************************'<コメント>#######################################
[Path]
WorkPath=C:/src/wk                                           'Work Folder Path

実際のコード

@echo off
set iniFileName=sample.ini

for /f "usebackq tokens=* delims=" %%A in (`call cscript //Nologo getProfileString.vbs "%iniFileName%" Path WorkPath`) do set ret=%%A

echo "%ret%"

pause
exit
Option Explicit
rem /*****************************************************************
rem  *  getProfileString.vbs iniFileName, sectionName, entryName
rem  *
rem  *  引数
rem  *    iniFileName : 設定ファイル名(フルパス)
rem  *    sectionName : セクション名
rem  *    entryName   : エントリー名
rem  *  動作
rem  *    引数に指定された設定ファイルより指定した
rem  *    「セクション」,「エントリー」に対応する設定値を返す
rem  *    先頭がカンマの場合はコメント行として扱う
rem  *    行の途中でカンマがある場合は直前までの文字列(右空白除去)を
rem  *    設定値として扱う
rem  *  戻り値
rem  *    設定値(見つからなかった場合およびエラーの場合は空を返す)
rem  *****************************************************************/

Dim ret
Dim fs
Dim readLineObj
Dim searchFlg
Dim buffer

rem ファイルシステムアクセス用
Set fs = CreateObject( "Scripting.FileSystemObject" )
ret = ""

rem ファイルを開く
on error resume next
Set readLineObj = fs.OpenTextFile( Wscript.Arguments(0), 1 )
if Err.Number <> 0 then
  rem ファイルアクセスエラーの場合は終了
  Wscript.Echo ret
  Wscript.Quit
end if
on error goto 0

rem 検索処理用のフラグ
searchFlg = false

rem 読込みループ
Do While not readLineObj.AtEndOfStream
  rem 行単位の読込み
  buffer = readLineObj.ReadLine

  rem 空の行以外の場合
  if Trim(buffer) <> "" then
    rem 対象セクションの場合
    if Ucase(Trim(buffer)) = "[" & Ucase( Wscript.Arguments(1) ) & "]" then
      searchFlg = true
    else
      rem 設定値を取得
      ret = GetProfileString(buffer, Wscript.Arguments(2), searchFlg)

      rem エントリー名が見つからなかった場合
      if searchFlg And IsEmpty(ret) then
        ret = ""
      end if

      rem 設定値を取得できた場合はループを抜ける
      if searchFlg And (Len(ret) <> 0) then Exit Do
    end if
  end if
Loop

readLineObj.Close
Wscript.Echo ret
Wscript.Quit

rem /*****************************************************************
rem  *  引数に指定された設定ファイルより指定した
rem  *  「セクション」,「エントリー」に対応する設定値を返す
rem  *  先頭がカンマの場合はコメント行として扱う
rem  *  行の途中でカンマがある場合は直前までの文字列(右空白除去)を
rem  *  設定値として扱う
rem  *
rem  *  引数
rem  *    buffer       : 設定ファイルより読込んだ行
rem  *    sectionName  : セクション名
rem  *    searchFlg    : 検索用フラグ
rem  *  戻り値
rem  *    設定値(見つからなかった場合およびエラーの場合は空を返す)
rem  *****************************************************************/
Function GetProfileString ( buffer, sectionName, searchFlg )
  Dim ret
  Dim entries
  Dim entry

  ret = ""
  if searchFlg then
    rem 次のセクションの場合
    if Left(Trim(buffer) ,1) = "[" then
      rem ループを抜ける
      GetProfileString = Empty

      Exit Function
    end if

    entries = Split(buffer, "'")
    entry = Split(entries(0), "=")

    rem エントリーの場合
    if (Ubound(entry) = 1) then
      rem 検索対象のエントリーの場合
      if Ucase(Trim(entry(0))) = Ucase(sectionName) then
        ret = RTrim(entry(1))
      End if
    end if
  end if

  GetProfileString = ret
End Function