ฉันพยายามเปิดหน้าต่างคำสั่งใหม่ในไฟล์ BAT:
start %windir%\system32\cmd.exe
หลังจากเปิดแล้วฉันต้องการรันคำสั่ง BAT ในหน้าต่างใหม่:
echo "test in new window"
ฉันจะทำสิ่งนี้ได้อย่างไร
ฉันพยายามเปิดหน้าต่างคำสั่งใหม่ในไฟล์ BAT:
start %windir%\system32\cmd.exe
หลังจากเปิดแล้วฉันต้องการรันคำสั่ง BAT ในหน้าต่างใหม่:
echo "test in new window"
ฉันจะทำสิ่งนี้ได้อย่างไร
คำตอบ:
คุณอาจพบคำตอบของคุณแล้วเพราะเมื่อไม่นานมานี้คุณถาม แต่ฉันพยายามทำสิ่งที่คล้ายกันเมื่อเขียนโค้ด ror ฉันต้องการเรียกใช้ "เซิร์ฟเวอร์ rails" ในหน้าต่าง cmd ใหม่ดังนั้นฉันไม่ต้องเปิด cmd ใหม่แล้วหาเส้นทางของฉันอีกครั้ง
สิ่งที่ฉันค้นพบคือการใช้สวิตช์ K เช่นนี้:
start cmd /k echo Hello, World!
เริ่มก่อน "cmd" จะเปิดแอปพลิเคชันในหน้าต่างใหม่และ "/ K" จะดำเนินการ "echo Hello, World!" หลังจาก cmd ใหม่หมด
คุณสามารถใช้สวิตช์ / C เพื่อทำสิ่งที่คล้ายกันได้
start cmd /C pause
ซึ่งจะดำเนินการ "หยุดชั่วคราว" แต่ปิดหน้าต่างเมื่อคำสั่งเสร็จสิ้น ในกรณีนี้หลังจากคุณกดปุ่ม ฉันพบสิ่งนี้มีประโยชน์สำหรับ "เซิร์ฟเวอร์ rails" จากนั้นเมื่อฉันปิดเซิร์ฟเวอร์ dev ของฉันฉันไม่ต้องปิดหน้าต่างหลังจากนั้น
ใช้สิ่งต่อไปนี้ในไฟล์แบตช์ของคุณ:
start cmd.exe /k "more-batch-commands-here"
หรือ
start cmd.exe /c "more-batch-commands-here"
/ c ดำเนินการคำสั่งที่ระบุโดยสายอักขระแล้วยกเลิก
/ k ดำเนินการคำสั่งที่ระบุโดยสายอักขระ แต่ยังคงอยู่
ศึกษาเอกสารคู่มือ cmd.exe โดยใช้cmd /?
รายละเอียดเพิ่มเติม
การจัดรูปแบบที่เหมาะสมของสตริงคำสั่งจะมีความซับซ้อนเพิ่มขึ้นเล็กน้อยด้วยช่องว่างในอาร์กิวเมนต์ ดูตัวอย่างด้านล่าง สังเกตการใช้เครื่องหมายคำพูดซ้อนในบางตัวอย่าง
ตัวอย่าง:
เรียกใช้โปรแกรมและส่งผ่านพารามิเตอร์ชื่อไฟล์:
CMD /c write.exe c:\docs\sample.txt
เรียกใช้โปรแกรมและผ่านชื่อไฟล์ยาว:
CMD /c write.exe "c:\sample documents\sample.txt"
ช่องว่างในเส้นทางโปรแกรม:
CMD /c ""c:\Program Files\Microsoft Office\Office\Winword.exe""
ช่องว่างในโปรแกรมพา ธ + พารามิเตอร์:
CMD /c ""c:\Program Files\demo.cmd"" Parameter1 Param2
CMD /k ""c:\batch files\demo.cmd" "Parameter 1 with space" "Parameter2 with space""
เรียกใช้งาน demo1 และ demo2:
CMD /c ""c:\Program Files\demo1.cmd" & "c:\Program Files\demo2.cmd""
ที่มา: http://ss64.com/nt/cmd.html
มันไม่ง่ายเลย
วิธีที่ดีที่สุดคือการมีส่วนของสคริปต์ที่คุณต้องการให้ทำงานใน "หน้าต่างใหม่" ให้อยู่ในไฟล์. bat แยกต่างหาก สิ่งนี้อาจใช้ไม่ได้หากเช่นคุณต้องการสถานะจำนวนมากจากสคริปต์ที่เหลือ (ตัวแปร ฯลฯ ) ทางเลือกหนึ่งคือการส่งผ่านค่าใด ๆ ที่คุณต้องการ (เช่น dir เพื่อทำงานใน) ไปยังไฟล์แบตช์:
start cmd.exe stuff.bat %this_dir%
หากคุณมีสถานะจำนวนมากในการส่งคุณอาจพิจารณาสร้างไฟล์แบตช์ในขณะทำงาน:
set foo=Hello, World
set list_me=%userprofile%
set tmpdir=c:\windows\temp
set tmp=%tmpdir%\tmp.foo
del /q /f "%tmp%"
echo.echo %foo%>>"%tmp%"
echo.dir "%list_me%">>>"%tmp"
start cmd.exe "%tmp%"
del /q /f "%tmp%"
เห็นได้ชัดว่านี่เป็นตัวอย่างเล็กน้อย
คำตอบข้างต้นช่วยฉัน แต่ก็ยังต้องมีการหา นี่คือตัวอย่างสคริปต์ที่ฉันใช้เพื่อเริ่มต้น 3 กระบวนการสำหรับการพัฒนาเว็บ มันส่งผลให้มีหน้าต่าง 3 บานเปิดอยู่เนื่องจากพวกเขาจำเป็นต้องทำงานอย่างต่อเนื่อง
Mongo ถูกเพิ่มเข้าสู่เส้นทางของฉันดังนั้นฉันจึงไม่จำเป็นต้องซีดีเหมือนที่ฉันทำกับอีกสองโปรแกรม แน่นอนเส้นทางไปยังไฟล์ของคุณจะแตกต่างกันไป แต่หวังว่าจะช่วยได้
:: Start MongoDB
start cmd.exe /k "mongod"
:: cd app directory, and start it
cd my-app
start cmd.exe /k "npm run dev"
:: cd to api server, and start that
cd ../my-app-api
start cmd.exe /k "npm run dev"
ขอบคุณทุกคนที่นี่ใน Stack Overflow; โซลูชันนี้แก้ไขคำถามข้างต้น แต่ถูกขยายเพื่อเรียกใช้งานเหล่านี้โดยอัตโนมัติ:
ฉันคิดว่าโครงการของฉันเรียกว่า"antiquum"
สร้างไฟล์"init.bat"ในไดเรกทอรี% USERPROFILE%ของคุณ(เปิดหน้าต่างcmdและดูเส้นทางที่ด้านซ้ายของเคอร์เซอร์เพื่อทราบว่า% USERPROFILE% คืออะไร)
@echo off
cd C:/projects/rails3/antiquorum
if "%1" == "antiquorum" GOTO start
if "%1" == "worker" GOTO worker
if "%1" == "server" GOTO server
if "%1" == "" GOTO end
:start
start cmd /k %USERPROFILE%\init.bat worker
start cmd /k %USERPROFILE%\init.bat server
TIMEOUT 30
start "" "http://localhost:3000/"
GOTO end
:server
rails s
GOTO end
:worker
rake jobs:work
:end
ในหน้าต่างบรรทัดคำสั่งใหม่ให้พิมพ์: C:> init antiquum
รหัสจะเปิดหน้าต่างอีกสอง cmd และเบราว์เซอร์ TIMEOUTหลีกเลี่ยงข้อผิดพลาดในเบราว์เซอร์
ส่วน: เริ่มทำงาน คุณสามารถรันภารกิจ 1,2 หรือ 4 แยกกันโดยพิมพ์ params เป็น: เซิร์ฟเวอร์ , ผู้ปฏิบัติงานหรือไม่มีเพื่อเปิด cmd ไว้ในรูทของโครงการ"antiquum"
สนุก.
หากฉันเข้าใจว่าคุณทำสิ่งนี้อย่างถูกต้องในไฟล์ค้างคาวของคุณจะเปิดพร้อมท์คำสั่งและพิมพ์ข้อความของคุณไปที่หน้าจอ
cmd.exe hello world
หวังว่านี่จะช่วยได้
การเรียกใช้ไฟล์หลามในหน้าต่าง cmd ใหม่ที่มีช่องว่างในชื่อไฟล์:
start cmd.exe /k python "C:\Program Files\HelloWorld.py"
เพิ่ม ระหว่างสองคำสั่งรันคำสั่งทั้ง/k
in order
ตัวอย่าง:
cmd /k echo "hello"
คำสั่งนี้จะเปิดก่อนcommand prompt
จากนั้นจึงเรียกใช้งานecho "hello"
คำสั่ง
cmd
หากคุณกำลังใช้นี้เพื่อเรียกใช้รางเซิร์ฟเวอร์คุณจริงไม่จำเป็นต้องประเภทstart rails s
คุณก็สามารถพิมพ์