我无法在Windows批处理文件中嵌入VBScript

时间:2017-03-15 22:52:43

标签: file batch-file vbscript

我无法在Windows批处理文件中嵌入VBScript。

部分代码 cadastro.bat:

@echo off
 echo.
set /p opcao3= DESEJA EXPORTAR ? (S-SIM / N-NAO):
if %opcao3%== s goto:Export else goto :Error
if %opcao3%== S goto:Export else goto :Error
if %opcao3%== n goto:Buscar else goto :Error
if %opcao3%== N goto:Buscar else goto :Error
echo.

:Export

 For /f "delims=" %%i in ('Cscript //nologo "script_.vbs" "Selecione uma pasta"') do Set "folder=%%i\%codigoPesq%__RELATORIO.txt"
 For /f "eol=- delims=" %%i in ('find /I "%codigoPesq%__" Registros') do >>"%folder%" Echo.%%i

START %folder%
ECHO.
ECHO.
ECHO.
ECHO.
ECHO                      VERIFIQUE O LOCAL [%folder%]
ECHO.
echo.
echo                      ENTER PARA VOLTAR AO MENU PRINCIPAL

script.vbs:

Dim objFolder, objShell
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(0, "Selecione uma pasta.", &H4000, 0)
If Not (objFolder Is Nothing) Then
   wscript.echo objFolder.Self.path
Else
   wscript.echo 0
End If

我只是想让vbscript进入批处理内,谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

据我所知,你想要一个包含vbscript和批处理代码的文件。如果是,试试这个:

@echo off
 echo.
set /p opcao3= DESEJA EXPORTAR ? (S-SIM / N-NAO):
if %opcao3%== s goto:Export else goto :Error
if %opcao3%== S goto:Export else goto :Error
if %opcao3%== n goto:Buscar else goto :Error
if %opcao3%== N goto:Buscar else goto :Error
echo.

:Export

 For /f "delims=" %%i in ('cscript //nologo "%~f0?.wsf" //job:VBS') do Set "folder=%%i\%codigoPesq%__RELATORIO.txt"
 For /f "eol=- delims=" %%i in ('find /I "%codigoPesq%__" Registros') do >>"%folder%" Echo.%%i

START %folder%
ECHO.
ECHO.
ECHO.
ECHO.
ECHO                      VERIFIQUE O LOCAL [%folder%]
ECHO.
echo.
echo                      ENTER PARA VOLTAR AO MENU PRINCIPAL

exit /b %errorlevel%

<package>
  <job id="VBS">
    <script language="VBScript">
        Dim objFolder, objShell
        Set objShell = CreateObject("Shell.Application")
        Set objFolder = objShell.BrowseForFolder(0, "Selecione uma pasta.", &H4000, 0)
        If Not (objFolder Is Nothing) Then
           wscript.echo objFolder.Self.path
        Else
           wscript.echo 0
        End If
    </script>
  </job>
</package>

这使用&#39; hack&#39;描述here。虽然这里批处理部分没有放在xml注释块中,但它应该工作正常,我发现它更具可读性。通常cscript解析器会查看.wsf个文件,并且只获取<package>个标记之间的内容,但是为了健壮性您可以为批处理代码添加注释块(或者为更强大的代码添加CDATA)。