Return File Name in VBS

1

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.

    
asked by anonymous 14.09.2017 / 15:09

2 answers

2

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)

    
14.09.2017 / 21:33
1

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)
    
14.09.2017 / 15:37