เป็นไปได้ไหมที่จะสร้าง VBScript ซึ่งเรียกใช้งานสคริปต์แบบแบตช์ภายในตัวเอง?


1

ฉันรู้ว่ามันฟังดูแปลก แต่ความคิดของฉันคือการสร้างไฟล์ข้อความเดียวซึ่งมี VBScript และ Batch Script อยู่ภายในเช่นถ้าฉันเรียกใช้สคริปต์นั้นเป็น VBScript มันเรียกตัวเองว่าเป็นสคริปต์ชุดและสคริปต์ชุดทำบางอย่าง งาน cmd.exe

ฉันรู้ว่าคุณสามารถใช้วิธี. ShellExecute แล้วเรียกใช้งานคอมม่าหลายรายการโดยใช้ CMD / C [... ] แต่มันยากที่จะอ่าน

ความพยายามของฉันคือ:

If False Then
  goto batchLines
End If
[...VBScript continues here...]
Wscript.Quit
:batchLines
[...batch Script starts here...]

แต่เท่าที่เห็นก็ไม่ได้ผลเลย


หากมีอยู่แล้วมันอาจจะยากกว่าวิธีที่เชลล์เรียกใช้ด้วย cmd / c ดูอาจเป็นไปได้ที่จะวางสตริงข้ามหลายบรรทัดจากนั้นเชลล์จะเรียกใช้cmd /c strหรือสร้างสตริงสตริงที่สร้างสคริปต์แบทช์ขึ้นมาเขียน ไปยังไฟล์ temp bat จากนั้นทำเชลล์เรียกใช้ชุดคำสั่ง cmd / c ไม่ใช่สิ่งที่คุณขออย่างแน่นอน แต่มันเป็นเพียงอีกวิธีหนึ่งในการรับชุดและ vbscript
barlop

มันสามารถทำได้อย่างง่ายดายในสิ่งที่ตรงกันข้าม ดูstackoverflow.com/q/9074476/1012053 - โดยเฉพาะให้ความสนใจกับโซลูชัน WSF บางทีคุณสามารถเปิดใช้ส่วนหัวเพื่อให้ VBS เรียกตัวเองว่าเป็นสคริปต์ชุดงาน แต่สคริปต์ต้องมีส่วนขยาย. BAT (หรือ. CMD) หากคุณต้องการให้เรียกใช้เป็นชุดงาน ซึ่งหมายความว่าคุณต้องเรียกใช้ VBS ด้วย CSCRIPT พร้อม//E:VBSตัวเลือก
dbenham

นี่คือไฮบริด jscript / batch เขียนโดย dbenham / dave benham jrepl.bat dostips.com/forum/viewtopic.php?f=3&t=6044
barlop

คำตอบ:


-1

สิ่งที่ตรงกันข้ามเป็นไปได้ (การสร้างแบตช์ที่รันสคริปต์ VB) นี่เป็นตัวอย่าง

@set @junk=1 /*
@echo off
REM Add Batch Stuff Here
if "%1" == "MOARBATCH" goto :MOARBATCH
cscript //nologo //E:jscript %~f0 %*
goto :eof */
// Add VBS stuff here
Wscript.Quit
/*
:MOARBATCH
REM More Batch Stuff Here
REM */

คุณสามารถไปถั่วกับเรื่องนี้ แต่ AFAIK คุณจะต้องเริ่มต้นด้วยไฟล์ชุดเพื่อที่จะใช้ประโยชน์จากมาตรฐานการจัดการแบทช์ไฟล์ที่นี้ใช้ BTW นี้มักจะเรียกว่าไฟล์ชุดไฮบริด


ขอขอบคุณ. ฉันต้องการสร้างสคริปต์เช่นนี้เพราะฉันต้องการเรียกใช้แบตช์ที่ต้องการสิทธิ์สูงกว่า (เรียกใช้ในฐานะผู้ดูแลระบบ) ดังนั้น vbScript สามารถขอสิทธิ์ที่สูงกว่าจากนั้นเรียกใช้ "คำสั่งคอนโซล" (โดยไม่ต้องเปิดหน้าต่างคอนโซลใหม่)
Pablo

1
โดยวิธีการที่ฉันสังเกตเห็นว่าคุณใช้ Jscript และยังเป็นคุณสมบัติของภาษานี้ (ความคิดเห็นหลายบรรทัด) ดังนั้นดูเหมือนว่าสคริปต์นี้ควรจะเขียนในจาวาสคริปต์เท่านั้น
Pablo

ไฟล์แบตช์ไฮบริด VBScript นั้นเป็นไปได้ แต่มันจะแฮ็คมากกว่าเดิม ถ้าเป็นไปได้ฉันจะไปกับ JScript คุณอาจต้องการใช้โซลูชันแบตช์ทั้งหมด ฉันจะเขียนหนึ่งสำหรับคุณเมื่อฉันพบที่ทำแล้ว: stackoverflow.com/a/28467343/932549
krowe

เนื่องจากมันกำลังเรียกเอ็นจิ้น JScript มันสามารถใช้งานกับ VBScript ได้หรือไม่?
NetMage
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.