这是来自previous answer
@if (@This==@IsBatch) @then
@echo off
rem **** batch zone *********************************************************
rem Check if started from javascript part of script.
rem We are checking an environment variable set from javascript part.
if "%_run_hidden_%"=="true" (
goto startBatchWork
)
rem if not started from javascript, call javascript part to restart batch.
wscript //E:JScript "%~dpnx0"
exit /b
:startBatchWork
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"
set "fullstamp=%YYYY%%MM%%DD%.%HH%%Min%%Sec%"
MOVE /Y C:\MyPath\Scripts\origfile.txt C:\MyPath\Scripts\997\newfile_%fullstamp%.txt
sleep 1
goto startBatchWork
rem End of batch area. Ensure batch ends execution before reaching javascript zone
exit /b
@end
// **** Javascript zone *****************************************************
// Instantiate the needed component to interact with Shell
var shell = WScript.CreateObject('WScript.Shell');
// Set the environment variable that the batch part will check to know
// it's running hidden
shell.Environment('Process').Item('_run_hidden_')='true';
// start the batch part of the script calling %comspec% with the current
// script as parameter, hidden (0) and not waiting for it to end (false)
shell.Run('"' + shell.ExpandEnvironmentStrings('%comspec%') + '" /c "' + WScript.ScriptFullName + '"', 0, false );
// All done. Exit
WScript.Quit(0);
这是一个混合 cmd/javascript 文件,您的代码包含在 :startBatchWork 之后。保存为.cmd文件。
您可以将其称为 cmd 文件。它将启动一个控制台(如果不在控制台中)来运行初始批处理部分。它将检查标志变量的存在以确定文件是否隐藏运行(从 js 部分开始)。如果它没有隐藏运行,则调用代码的 javascript 部分并设置标志变量并隐藏启动批处理文件。
或者,您可以使用wscript //e:JScript batchfile.cmd 直接调用javascript 部分并启动所有进程,而无需初始可见控制台。
在任何情况下,该进程都会在没有可见控制台的情况下继续隐藏运行。