Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Run JsonExtractor Without any other file #36

Open
agamsol opened this issue Sep 14, 2021 · 9 comments
Open

Run JsonExtractor Without any other file #36

agamsol opened this issue Sep 14, 2021 · 9 comments

Comments

@agamsol
Copy link

agamsol commented Sep 14, 2021

No description provided.

@agamsol
Copy link
Author

agamsol commented Sep 14, 2021

What i want to do
is to add the jsonextractor.bat
in to a batch file but call it as a label and not a file
how can i do that?

@npocmaka
Copy link
Owner

You mean by passing the string directly or as part of a bat file?

@agamsol
Copy link
Author

agamsol commented Oct 20, 2021

i mean, being able to merge the json exectutor with my main batch script by calling it as a function

example:

@echo off

REM calling the function to parse the json value
call :JsonExtractor file.js "name"

pause >nul
exit /b

:JsonExtractor
REM The hybrid batch "Json Executor" function here.
REM Basically being able to call a label instead of calling a file
goto :EOF 

@npocmaka
Copy link
Owner

try like this:

@if (@CodeSection == @Batch) @then
	@echo off

	call :jsonextractor "c:\file.json" "something[0].something_else"

	
	goto :eof
	:jsonextractor
	cscript /nologo /e:JScript "%~f0" %*
	goto :EOF

@end // end batch 

var htmlfile = WSH.CreateObject('htmlfile');
htmlfile.write('<meta http-equiv="x-ua-compatible" content="IE=9" />');
var JSON = htmlfile.parentWindow.JSON;

//needs file existence checks
var jsloc=WScript.Arguments.Item(0);
var jsonPath=WScript.Arguments.Item(1);


FSOObj = new ActiveXObject("Scripting.FileSystemObject");
var txtFile=FSOObj.OpenTextFile(jsloc,1);
var json=txtFile.ReadAll();

try {
	var jParsed=JSON.parse(json);
}catch(err) {
   WScript.Echo("Failed to parse the json content");
   htmlfile.close();
   txtFile.close();
   WScript.Exit(1);
   //WScript.Echo(err.message);
}


WScript.Echo(eval("JSON.stringify(jParsed."+jsonPath+")"));


htmlfile.close();
txtFile.close();

@agamsol
Copy link
Author

agamsol commented Oct 20, 2021

I mean
As a complete function
So that i can add it at the very bottom of the script

@npocmaka
Copy link
Owner

Because of the way the hack works - the jscript code allays should be at the end. Think for the @end // end batch as the end of the batch code - now the jsonextractor function is at the end of it.

@agamsol
Copy link
Author

agamsol commented Oct 20, 2021

i mean
the main normal batch script at the top
and for the very bottom a pure batch hybrid script

@agamsol
Copy link
Author

agamsol commented Dec 5, 2021

Help?

@andry81
Copy link

andry81 commented Dec 5, 2021

Additionally to already answered.

Long reading:

https://www.dostips.com/forum/viewtopic.php?f=3&t=5543
https://stackoverflow.com/questions/9074476/is-it-possible-to-embed-and-execute-vbscript-within-a-batch-file-without-using-a/9074483#9074483

JScript example:

@set @dummy=0 /*
@echo off

rem Your batch script is here...

cscript /nologo /e:jscript "%~f0" %*
exit /b
*/

// JScript code

WScript.Echo(123)

Or

0</* :
@echo off

rem Your batch script is here...

cscript /nologo /e:jscript "%~f0" %*
exit /b
*/

// JScript code

WScript.Echo(123)

VBScript example:

::'�@echo off

::'�rem You batch script is here...

::'�cscript /nologo /e:vbscript "%~f0" %*
::'�exit /b

' VBScript code

WScript.Echo 123

The is a SUB character: dec=26 hex=0x1A

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants