コマンドラインの文字列をスペースで区切ります。
""の中のスペースは無視します。
全てひとまとめ版 [ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]コード: Function cmdbun(cmd As String,sepalator As String) As String
Dim command As String
Dim where As DWord
command=cmd
cmdbun=""
While Len(command)>0
if Asc(command)=Asc(Ex"\q") Then
where=InStr(2,command,Ex"\q")
if where=0 Then where=Len(command)+1
cmdbun=cmdbun+Mid$(command,2,where-2)
command=Mid$(command,where+2)
Else
where=InStr(1,command," ")
if where=0 Then where=Len(command)+1
cmdbun=cmdbun+Mid$(command,1,where-1)
command=Mid$(command,where+1)
End If
cmdbun=cmdbun+sepalator
Wend
cmdbun=Left$(cmdbun,Len(cmdbun)-Len(sepalator))
End Function
スイッチとそれ以外を分ける版 [ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]コード: Sub cmdbunpathsw(ByRef file As String,ByRef switch As String,cmd As String,sepalator As String)
Dim command As String
Dim where As DWord
Dim horyuu As String
command=cmd
file=""
switch=""
While Len(command)>0
If Asc(command)=Asc(Ex"\q") Then
where=InStr(2,command,Ex"\q")
If where=0 Then where=Len(command)+1
horyuu=Mid$(command,2,where-2)
command=Mid$(command,where+2)
Else
where=InStr(1,command," ")
If where=0 Then where=Len(command)+1
horyuu=Mid$(command,1,where-1)
command=Mid$(command,where+1)
End If
If Asc(horyuu)=Asc("/") or Asc(horyuu)=Asc("-") Then
switch=switch+Mid$(horyuu,2)+sepalator
Else
file=file+horyuu+sepalator
End If
Wend
if Len(file)>0 Then file=Left$(file,Len(file)-Len(sepalator))
if Len(switch)>0 Then switch=Left$(switch,Len(switch)-Len(sepalator))
End Sub
説明 [ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]
書式
全てひとまとめ版:cmdbun(cmd,sepalator)
スイッチとそれ以外を分ける版:cmdbunpathsw(file,switch,cmd,sepalator)
共通事項
cmd(String型):コマンドライン文字列を指定する。
sepalator(String型):区切り文字列を指定する。
cmdbunについて
戻り値(String型):コマンドラインを区切った文字列
cmdbunpathswについて
file(ポインタ参照String型):分割されたファイル名が入る
switch(ポインタ参照String型):分割されたスイッチが入る
戻り値:なし
サンプルプログラム [ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]コード: #N88BASIC
Dim cmd As String
Dim file As String
Dim switch As String
cmd=MakeStr(GetCommandLine())
file=cmdbun(cmd,Ex"\r\n")
Print "-------------全て-------------"
Print file
cmdbunpathsw(file,switch,cmd,Ex"\r\n")
Print "---------ファイルのみ---------"
Print file
Print "---------スイッチのみ---------"
Print switch
Print "------------------------------"
Function cmdbun(cmd As String,sepalator As String) As String
Dim command As String
Dim where As DWord
command=cmd
cmdbun=""
While Len(command)>0
if Asc(command)=Asc(Ex"\q") Then
where=InStr(2,command,Ex"\q")
if where=0 Then where=Len(command)+1
cmdbun=cmdbun+Mid$(command,2,where-2)
command=Mid$(command,where+2)
Else
where=InStr(1,command," ")
if where=0 Then where=Len(command)+1
cmdbun=cmdbun+Mid$(command,1,where-1)
command=Mid$(command,where+1)
End If
cmdbun=cmdbun+sepalator
Wend
cmdbun=Left$(cmdbun,Len(cmdbun)-Len(sepalator))
End Function
Sub cmdbunpathsw(ByRef file As String,ByRef switch As String,cmd As String,sepalator As String)
Dim command As String
Dim where As DWord
Dim horyuu As String
command=cmd
file=""
switch=""
While Len(command)>0
If Asc(command)=Asc(Ex"\q") Then
where=InStr(2,command,Ex"\q")
If where=0 Then where=Len(command)+1
horyuu=Mid$(command,2,where-2)
command=Mid$(command,where+2)
Else
where=InStr(1,command," ")
If where=0 Then where=Len(command)+1
horyuu=Mid$(command,1,where-1)
command=Mid$(command,where+1)
End If
If Asc(horyuu)=Asc("/") or Asc(horyuu)=Asc("-") Then
switch=switch+Mid$(horyuu,2)+sepalator
Else
file=file+horyuu+sepalator
End If
Wend
if Len(file)>0 Then file=Left$(file,Len(file)-Len(sepalator))
if Len(switch)>0 Then switch=Left$(switch,Len(switch)-Len(sepalator))
End Sub
最後にひとつ:hideばっかりですみません...。
[hide=はじめに]前にも同じようなものがありましたが、少し違うのであえて載せます。[/hide] コマンドラインの文字列をスペースで区切ります。 ""の中のスペースは無視します。 [hide=全てひとまとめ版][code]Function cmdbun(cmd As String,sepalator As String) As String Dim command As String Dim where As DWord command=cmd cmdbun="" While Len(command)>0 if Asc(command)=Asc(Ex"\q") Then where=InStr(2,command,Ex"\q") if where=0 Then where=Len(command)+1 cmdbun=cmdbun+Mid$(command,2,where-2) command=Mid$(command,where+2) Else where=InStr(1,command," ") if where=0 Then where=Len(command)+1 cmdbun=cmdbun+Mid$(command,1,where-1) command=Mid$(command,where+1) End If cmdbun=cmdbun+sepalator Wend cmdbun=Left$(cmdbun,Len(cmdbun)-Len(sepalator)) End Function[/code][/hide] [hide=スイッチとそれ以外を分ける版][code]Sub cmdbunpathsw(ByRef file As String,ByRef switch As String,cmd As String,sepalator As String) Dim command As String Dim where As DWord Dim horyuu As String command=cmd file="" switch="" While Len(command)>0 If Asc(command)=Asc(Ex"\q") Then where=InStr(2,command,Ex"\q") If where=0 Then where=Len(command)+1 horyuu=Mid$(command,2,where-2) command=Mid$(command,where+2) Else where=InStr(1,command," ") If where=0 Then where=Len(command)+1 horyuu=Mid$(command,1,where-1) command=Mid$(command,where+1) End If If Asc(horyuu)=Asc("/") or Asc(horyuu)=Asc("-") Then switch=switch+Mid$(horyuu,2)+sepalator Else file=file+horyuu+sepalator End If Wend if Len(file)>0 Then file=Left$(file,Len(file)-Len(sepalator)) if Len(switch)>0 Then switch=Left$(switch,Len(switch)-Len(sepalator)) End Sub[/code][/hide] [hide=説明] [color=red]書式[/color] 全てひとまとめ版:cmdbun(cmd,sepalator) スイッチとそれ以外を分ける版:cmdbunpathsw(file,switch,cmd,sepalator) [color=red]共通事項[/color] cmd(String型):コマンドライン文字列を指定する。 sepalator(String型):区切り文字列を指定する。 [color=red]cmdbunについて[/color] 戻り値(String型):コマンドラインを区切った文字列 [color=red]cmdbunpathswについて[/color] file(ポインタ参照String型):分割されたファイル名が入る switch(ポインタ参照String型):分割されたスイッチが入る 戻り値:なし[/hide] [hide=サンプルプログラム][code]#N88BASIC Dim cmd As String Dim file As String Dim switch As String cmd=MakeStr(GetCommandLine()) file=cmdbun(cmd,Ex"\r\n") Print "-------------全て-------------" Print file cmdbunpathsw(file,switch,cmd,Ex"\r\n") Print "---------ファイルのみ---------" Print file Print "---------スイッチのみ---------" Print switch Print "------------------------------" Function cmdbun(cmd As String,sepalator As String) As String Dim command As String Dim where As DWord command=cmd cmdbun="" While Len(command)>0 if Asc(command)=Asc(Ex"\q") Then where=InStr(2,command,Ex"\q") if where=0 Then where=Len(command)+1 cmdbun=cmdbun+Mid$(command,2,where-2) command=Mid$(command,where+2) Else where=InStr(1,command," ") if where=0 Then where=Len(command)+1 cmdbun=cmdbun+Mid$(command,1,where-1) command=Mid$(command,where+1) End If cmdbun=cmdbun+sepalator Wend cmdbun=Left$(cmdbun,Len(cmdbun)-Len(sepalator)) End Function
Sub cmdbunpathsw(ByRef file As String,ByRef switch As String,cmd As String,sepalator As String) Dim command As String Dim where As DWord Dim horyuu As String command=cmd file="" switch="" While Len(command)>0 If Asc(command)=Asc(Ex"\q") Then where=InStr(2,command,Ex"\q") If where=0 Then where=Len(command)+1 horyuu=Mid$(command,2,where-2) command=Mid$(command,where+2) Else where=InStr(1,command," ") If where=0 Then where=Len(command)+1 horyuu=Mid$(command,1,where-1) command=Mid$(command,where+1) End If If Asc(horyuu)=Asc("/") or Asc(horyuu)=Asc("-") Then switch=switch+Mid$(horyuu,2)+sepalator Else file=file+horyuu+sepalator End If Wend if Len(file)>0 Then file=Left$(file,Len(file)-Len(sepalator)) if Len(switch)>0 Then switch=Left$(switch,Len(switch)-Len(sepalator)) End Sub[/code][/hide] 最後にひとつ:hideばっかりですみません...。
|