ファイル名に=;,や全角空白を含むファイルをバッチファイルにドロップすると、ファイル名が分割される。
以下のバッチファイルで現象が再現できます。
call :sub a b=c;d,e
goto :eof
:sub
echo 1=%1
echo 2=%2
echo 3=%3
echo 4=%4
echo 5=%5
echo 6=%6
参考記事:「ファイル名に=;,や全角空白を使うときは、半角空白も併せて使うべし。」
http://scripting.cocolog-nifty.com/blog/2008/02/post_c740.html
回避策も、参考記事のとおりですが、他に、以下のスクリプトをバッチファイルに関連付ける方法があります。
CScript.exe "フルパス\CMD.VBS" "%1" %*
Option Explicit
Dim wShell
Dim Args
Dim Arg
Dim oExec
Set wShell=CreateObject("WScript.Shell")
Args=Array("CMD.EXE /C <CON 2>&1")
For Each Arg In WScript.Arguments
If InStr(Arg," ") + InStr(Arg," ") Then Arg="""" & Arg & """"
ReDim Preserve Args(UBound(Args)+1)
Args(UBound(Args))=Arg
Next
Set oExec=wShell.Exec(Join(Args," "))
Do While Not oExec.StdOut.AtEndOfStream
WScript.StdOut.Write oExec.StdOut.Read(1)
Loop
Do While oExec.Status=0
WScript.Sleep 100
Loop
WScript.Quit oExec.ExitCode
« VBScriptからmax()やmin()などのJScriptのMathオブジェクトのメソッドやプロパティを使う。 | トップページ | ファイル名に=;,や全角空白を含むファイルをバッチファイルにドロップすると、ファイル名が分割される。(その2) »