[APORTE] [VBS] Convertidor de .vbs a .bat . (VBS2CMD)

Iniciado por **Aincrad**, 2 Octubre 2017, 21:58 PM

0 Miembros y 1 Visitante están viendo este tema.

**Aincrad**

hola a todos los del foro.  :laugh:
hoy les traigo un convertidor de archivos vbs a .bat  . que encontre en internet, creo que el autor se llama Denis   (VBS2CMD)

code del convertidor (VBS2CMD.vbs)

Código (actionscript) [Seleccionar]
Option Explicit

Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Const TristateUseDefault = -2

Dim arrVBStext
Dim blnQuiet
Dim intOVRWT, intResult, intValidArgs
Dim objDialog, objFile, objFSO, wshShell
Dim strBaseFileName, strCMDout, strFileName, strFileNameIN, strFileNameOUT
Dim strNewText, strOldText, strText, strVBSline

With WScript.Arguments
If .Unnamed.Count > 1 Then Syntax
intValidArgs = 0
If .Unnamed.Count = 1 Then
strFileNameIN = .Unnamed(0)
intValidArgs = intValidArgs + 1
End If
If .Named.Exists( "Q" ) Then
blnQuiet = True
intValidArgs = intValidArgs + 1
End If
If intValidArgs <> .Count Then Syntax
End With

Set WshShell = WScript.CreateObject( "WScript.Shell" )
Set objFSO = CreateObject( "Scripting.FileSystemObject" )

If strFileNameIN = "" Then
'File browse dialog box (XP only) (NFG in 7/2008, Thank you MS!)
On Error Resume Next
Set objDialog = CreateObject( "UserAccounts.CommonDialog" )
If Err Then
strFileNameIN = ""
WScript.Echo "No file specified."
Else
objDialog.Filter = "All Files|*.*"
objDialog.InitialDir = wshShell.CurrentDirectory
intResult = objDialog.ShowOpen
If intResult = 0 Then
strFileNameIN = ""
wshShell.Popup "No file selected.", 1, " ", 64
Else
strFileNameIN = objDialog.FileName
End If
Set objDialog = Nothing
End If

Set objDialog = Nothing
On Error Goto 0
End If

If strFileNameIN = "" Then Syntax

strFileNameOUT = objFSO.GetParentFolderName( strFileNameIN ) & objFSO.GetBaseName( strFileNameIN ) & "_CONVERTED.CMD"

'Check if strFileNameOUT exists already
If objFSO.FileExists( strFileNameOUT ) Then  'does the file EXIST?
If blnQuiet Then
WScript.Echo "Deleting existing file."
objFSO.DeleteFile( strFileNameOUT )
Else
intOVRWT = MsgBox( strFileNameOUT & " exists already" & vbCrLf & "Overwrite?", vbYesNoCancel, "Overwrite?" )
If intOVRWT = 6 Then
'proceed
objFSO.DeleteFile( strFileNameOUT )
Else
wshShell.Popup "Exiting as requested.", 1, " ", 64
WScript.Quit
End If
End If
End If


'open strFileNameANSI file, and put entire file into a variable
Set objFile = objFSO.OpenTextFile( strFileNameIN, ForReading )
strText = objFile.ReadAll
objFile.Close

'************ Start converting *************
'^  Escape character.
' Adding the escape character before a command symbol
' allows it to be treated as ordinary text.
'When piping or redirecting any of these charcters you should
'prefix with the escape ^ character: \ & | > < ^
'e.g.  ^\  ^&  ^|  ^>  ^<  ^^

'# Escape out ^ symbols (Must be 1st !!!)
strOldText = "^"
strNewText = "^^"
strText = Replace( strText, strOldText, strNewText )

'# Escape out \ symbols
'strOldText = "\"
'strNewText = "^\"
'strText = Replace( strText, strOldText, strNewText )

'# Escape out & symbols
strOldText = "&"
strNewText = "^&"
strText = Replace( strText, strOldText, strNewText )

'# Escape out | symbols
strOldText = "|"
strNewText = "^|"
strText = Replace( strText, strOldText, strNewText )

'# Escape out > symbols
strOldText = ">"
strNewText = "^>"
strText = Replace(strText, strOldText, strNewText)

'# Escape out < symbols
strOldText = "<"
strNewText = "^<"
strText = Replace( strText, strOldText, strNewText )

'Converting into array
'Dim arrVBStext()
arrVBStext = Split( strText, vbCrLf ) 'create one-dimensional array

strFileName = objFSO.GetFileName( strFileNameIN )
strBaseFileName = objFSO.GetBaseName( strFileNameIN )
strCMDout = ""
strCMDout = strCMDout & "@ECHO OFF" & vbCrLf
strCMDout = strCMDout & "Call :" & strBaseFileName & vbCrLf
strCMDout = strCMDout & vbCrLf
strCMDout = strCMDout & vbCrLf
strCMDout = strCMDout & "REM Prevent running the " & strFileName & " twice" & vbCrLf
strCMDout = strCMDout & "Exit /b 0" & vbCrLf

strCMDout = strCMDout & ":" & strBaseFileName & vbCrLf

strCMDout = strCMDout & "REM  This will create a file called " & strFileName & " in %TEMP%" & vbCrLf
strCMDout = strCMDout & "REM" & vbCrLf
strCMDout = strCMDout & "REM  The following will overwite any pre-existing file called %TEMP%\" & strFileName & vbCrLf
strCMDout = strCMDout & "echo.> %TEMP%\" & strFileName & vbCrLf
'Add  Echo  in front and  >> %TEMP%\<VBSNAME>.VBS at the end of every line
For Each strVBSline in arrVBStext
If Trim( strVBSline ) = "" Then
strCMDout = strCMDout & "echo. >> %TEMP%\" & strFileName & vbCrLf
Else
strCMDout = strCMDout & "echo " & strVBSline & " >> %TEMP%\" & strFileName & vbCrLf
End If
Next
strCMDout = strCMDout & "Cscript.exe //NoLogo ""%TEMP%\" & strFileName & """" & vbCrLf
strCMDout = strCMDout & "Exit /b 0" & vbCrLf
'Converting done

'Write to file
Set objFile = objFSO.OpenTextFile( strFileNameOUT, ForAppending, True )
objFile.WriteLine strCMDout

objFile.Close

If blnQuiet Then
WScript.Echo "created " & strFileNameOUT
Else
wshShell.Popup "created " & strFileNameOUT, 3, "Completed", 64
End If

Set objFile = Nothing
Set wshShell = Nothing
Set objFSO = Nothing


Sub Syntax
Dim strMsg
strMsg = vbCrLf _
      & "Como usarlo:  VBS2CMD.VBS  archivo-vbscript.vbs  [ /Q ]" & vbCrLf & vbCrLf _
      & "Donde:  archivo-vbscript.vbs  es el archivo a ser ""convertido""" & vbCrLf _
      & "                           (necesario en todas las versiones excepto en XP XP)" & vbCrLf _
      & "        /Q                 Evita los dialogos"
WScript.Echo strMsg
WScript.Quit 1
End Sub



Como usar :

code batch para usar.

Código (bash) [Seleccionar]
@echo off
VBS2CMD.vbs nombre-de-tu-vbs.vbs
pause


                                         COMENTEN





MCKSys Argentina

Hubiera sido mejor que le dejaras los comentarios (incluyendo el nombre del autor):

http://www.robvanderwoude.com/sourcecode.php?src=vbs2cmd_vbs

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


**Aincrad**

Cita de: MCKSys Argentina en  3 Octubre 2017, 06:03 AM
Hubiera sido mejor que le dejaras los comentarios (incluyendo el nombre del autor):

http://www.robvanderwoude.com/sourcecode.php?src=vbs2cmd_vbs

La verdad, si hubiera sabido cual era el autor lo hubiera puesto, pero como no lo sabia no lo puse . ya que este script me lo pasaron. solo estoy compartiendo lo que tengo.  :D

ahhh , y gracias por la pagina que pusiste hay buenas tols.  ;-)




Eleкtro

#3
Cita de: **Aincrad** en  3 Octubre 2017, 19:16 PMLa verdad, si hubiera sabido cual era el autor lo hubiera puesto, pero como no lo sabia no lo puse . ya que este script me lo pasaron.

Hace poco más de una hora has modificado el post original para añadir esto:
Citar(...) que encontre en internet, creo que el autor se llama Denis  

Evidentemente en el post original no decías nada de haberlo encontrado por internet (por cierto, ¿lo encontraste por Internet, o te lo pasaron, en qué quedamos?), ni tampoco mencionabas a un tal "Denis"... que ya de por si suena absurdo que hace una hora hayas modificado el post para incluir lo del tal "Denis" cuando varias horas antes de que modificases el post ya te habian dicho el nombre del autor (aunque por supuesto tú ya conocías el nombre de Rob Vanderwoude antes de que te lo dijeran).

No cuela el intento, ¿pero que te crees, que somos tontos?. Has intentado apropiarte del trabajo de otra persona, algo muy poco honrado, y lo peor de todo es que no es la primera vez que publicas un aporte/script en el foro diciendo que es de tu autoridad pero en realidad solo es un copy&paste ligeramente modificado del trabajo de otra persona... pero bueno, para que voy a hablar yo de lo mio, no merece la pena.

En fin, mejor habría sido no seguir intentando engañarnos modificando el texto del post original... y no haber respondido nada al compañero @MCKSys, o haber respondido con honestidad.

PD: Cierro el tema para evitar más modificaciones "raras" al post principal... y por que este tipo de aportes del modo en el que se ha hecho sin ética no merece ningún tipo de recompensa.

Saludos.