Is it possible to return the name of a file / program through a VBS script? Type as you drag and drop into the script or open with ... the script, it returns the name.
Is it possible to return the name of a file / program through a VBS script? Type as you drag and drop into the script or open with ... the script, it returns the name.
The Wscript.Arguments
recognizes the file following the parameters as if it were a normal executable and with GetFileName
you can get the name and GetAbsolutePathName
will get the full path.
An example script:
Dim Arg
Set objFSO = CreateObject("Scripting.FileSystemObject")
'Verifica se selecionou arrastou ao menos um arquivo
If WScript.Arguments.Count > 0 Then
'Itera todos arquivos que soltou em uma ação
For Each Arg in Wscript.Arguments
'Remove possíveis espaços
Arg = Trim(Arg)
Set objFile = objFSO.GetFile(Arg)
'Exibe um dialogo somente para testes
MsgBox("Nome: " & objFSO.GetFileName(objFile) & " - caminho: " & objFSO.GetAbsolutePathName(objFile))
Next
End If
Running script example:
Ifyouwanttolimitonlytoonefile,thenchangetheline:
IfWScript.Arguments.Count>0Then
To
IfWScript.Arguments.Count=1Then
Itshouldlooklikethis:
DimArgSetobjFSO=CreateObject("Scripting.FileSystemObject")
'Verifica se selecionou arrastou um arquivo
If WScript.Arguments.Count = 1 Then
'Itera todos arquivos que soltou em uma ação
For Each Arg in Wscript.Arguments
'Remove possíveis espaços
Arg = Trim(Arg)
Set objFile = objFSO.GetFile(Arg)
'Exibe um dialogo somente para testes
MsgBox("Nome: " & objFSO.GetFileName(objFile) & " - caminho: " & objFSO.GetAbsolutePathName(objFile))
Next
End If
To check if it is a file and not a folder, use FileExists
/ FolderExists
An example that verifies whether it is a file and how many it has selected:
Dim Arg
Set objFSO = CreateObject("Scripting.FileSystemObject")
'Verifica se selecionou arrastou ao menos um arquivo
If WScript.Arguments.Count = 1 Then
'Itera todos arquivos que soltou em uma ação
For Each Arg in Wscript.Arguments
'Remove possíveis espaços
Arg = Trim(Arg)
If objFSO.FileExists(Arg) Then
Set objFile = objFSO.GetFile(Arg)
'Exibe um dialogo somente para testes
MsgBox("Nome: " & objFSO.GetFileName(objFile) & " - caminho: " & objFSO.GetAbsolutePathName(objFile))
Else
MsgBox("Este arquivo não existe ou é uma pasta")
End If
Next
ElseIf WScript.Arguments.Count > 1 Then
MsgBox("Você mais de um arquivo")
Else
MsgBox("Você não selecionou nenhum arquivo")
End If
Note: Save the .vbs file as ANSI (windows-1252 or iso-8859-1 or compatible), UTF-8 or another unicode type may not be displayed in
MsgBox
( unless you make adjustments to the script)
Yes, it is possible. See the FileSystemObject :
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile("C:\Scripts\Test.txt")
Wscript.Echo "File name: " & objFSO.GetFileName(objFile)