수색…


소개

BatchVBS 기능으로 실행될 수있어 안정성이 더욱 향상됩니다. 예를 들어, VBS 는 소수점, 공백 및 batch 으로 수행 할 수없는 몇 가지 고급 작업을 처리 할 수 ​​있습니다. 또한 WMI 및 ActiveX 개체로 작업 할 수 있습니다.

임시 파일로 VBS 실행

batch 에서 다른 스크립트를 실행하는 구식 방법은 스크립트를 다른 위치로 echo 시킨 다음 실행하는 것입니다.

이 방법은 다음과 같이 나타낼 수 있습니다.

@echo off
rem VBS below
    echo your vbs > TempVBS.vbs
    echo other vbs>>TempVBS.vbs
rem End of VBS

cscript //nologo TempVBS.vbs
del /f /s /q TempVBS.vbs

위의 방법은 많은 echo (vbs) >> TempVBS.vbs 가 필요하므로 단축하는 방법이 있습니다. (코드 Aacini)

@echo off
setlocal

rem Get the number of the "<resource>" line
for /F "delims=:" %%a in ('findstr /N "<resource>" "%~F0"') do set "start=%%a"

rem Skip such number of lines and show the rest of this file
(for /F "usebackq skip=%start% delims=" %%a in ("%~F0") do echo %%a) > Program.vbs

cscript //nologo Program.vbs
del /f /s /q Program.vbs
exit /b

<resource>
your vbs
another line of vbs

마지막 방법은 streams 을 사용 streams 입니다. 파일에는 몇 개의 스트림이있을 수 있습니다. 모든 스트림에는 다른 정보가 포함될 수 있습니다.

@echo off

    echo vbs >%0:stream1
    rem This command redirect "vbs" into the stream1 of this script, then we can call it later

cscript %0:stream1 //nologo
   rem if you like, you can clear the stream1 of this file by:
   type nul>%0:stream1

임시 파일을 사용하지 않고 배치 파일에 vbscript 코드 삽입

다음은 dostips 포럼의 사용자 인 Liviu가 발명 한 기술 (해킹)의 예입니다.

@echo off
echo Printed by CMD.EXE
cscript //nologo "%~f0?.wsf" //job:JS //job:VBS

exit /b %errorlevel%

----END OF BATCH CODE---
<package>
  <job id="JS"> 
    <script language="VBScript">
    
        WScript.Echo("Printed by VBScript"):
        
    </script>
  </job>
  <job id="VBS"> 
    <script language="JScript">
    
        WScript.Echo("Printed by JScript");
        
    </script>
  </job>
</package>

Windows 스크립트 호스트 가있는 wsf 파일을 실행하는 것은 확장에 민감하므로 파일 끝 부분에 ?.wsf 를 추가하여 확장명을 가진 파일을 실행할 수 있습니다 (해킹의 핵심). Liviu의 예제가 더 강력 할지라도 위의 코드는 좀 더 단순화 된 버전입니다. wsh는 <package> 노드 외부의 것에 대해서는별로 신경 쓰지 않기 때문에 XML 주석에 모든 것을 넣을 의무가 없습니다. 리디렉션 기호 ( <> )는주의해야하지만



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow