ฉันจะเปิดแอปพลิเคชันคอนโซลที่มีขนาดหน้าต่างที่กำหนดได้อย่างไร


16

แอปพลิเคชันที่ฉันต้องการเริ่มต้นคือ MongoDB หากฉันจะเริ่มต้นตามปกติดูเหมือนว่า:

ป้อนคำอธิบายรูปภาพที่นี่

ฉันไม่ชอบจำนวนการขึ้นบรรทัดใหม่และมีพื้นที่หน้าจอจำนวนมากดังนั้นฉันต้องการใช้พื้นที่ดังกล่าวเพื่อกำจัดการขึ้นบรรทัดใหม่

ฉันสามารถเปลี่ยนขนาดของหน้าต่างคอนโซลด้วยMODEดังนั้นฉันจึงเขียนไฟล์แบทช์ดังนี้:

@ECHO OFF
MODE con:cols=140 lines=70
%~dp0mongodb\bin\mongod --dbpath %~dp0data --rest

จนถึงตอนนี้ดีมาก เมื่อฉันเริ่มแบตช์ไฟล์นี้ฉันจะได้หน้าต่างที่ใหญ่ขึ้นตามที่ต้องการ

แต่เมื่อฉันกดCtrl+ Cเพื่อออกจาก MongoDB ฉันได้รับพรอมต์ที่น่ารำคาญ:

Terminate batch job (Y/N)?

ซึ่งไม่มีประโยชน์เพราะคำสั่งที่ฉันเพิ่งออกจากคือคำสั่งสุดท้ายในงานแบตช์อยู่แล้วและไม่ว่าฉันจะตอบอะไรผลลัพธ์ก็เหมือนกัน

ดังนั้นฉันจะได้รับหน้าต่างคอนโซลที่ใหญ่ขึ้นสำหรับแอปพลิเคชันโดยไม่แจ้งให้ทราบเมื่อฉันกดCtrl+ Cอย่างไร

คำตอบ:


12

ฉันใช้เวลาสองสามชั่วโมงในวันนี้เพื่อใช้แอปพลิเคชัน C # ขนาดเล็กที่สามารถรวมแอปพลิเคชันคอนโซลอื่นและปรับขนาดหน้าต่างของโฮสต์โฮสต์

console-wrapperใช้งานง่าย คาดหวังเพียงพารามิเตอร์พารามิเตอร์บรรทัดคำสั่งสอง:

Usage: console-wrapper.exe [OPTIONS]

Options:

      --subject=VALUE        The application that should be started by the
                               console wrapper.
      --width=VALUE          The desired width of the console window.
      --height=VALUE         The desired height of the console window.
  -h, -?, --help             Shows this help message

--widthและ--heightใช้เพื่อตั้งค่าขนาดของหน้าต่างคอนโซลผลลัพธ์ --subjectสามารถใช้เป็นทางเลือกหากไม่ได้ระบุพารามิเตอร์ที่เหลือจะถือว่าเป็นคำสั่ง (พร้อมพารามิเตอร์) เพื่อเริ่มต้น

ดังนั้นการโทรครั้งสุดท้ายที่ฉันใช้ในสคริปต์เริ่มต้นของเราคือ:

START "MongoDB" database\console-wrapper.exe --width=140 --height=70 %~dp0database\mongodb\bin\mongod.exe --dbpath %~dp0database\data --rest

หน้าต่างผลลัพธ์จะมีขนาดที่ร้องขอและเมื่อกดCtrl+ Cหน้าต่างจะปิด (หลังจากที่ปิดกระบวนการที่มีอยู่อย่างถูกต้อง)


6

คุณถือว่าใช้งานได้จากสคริปต์ PowerShell? Powershell สามารถปรับขนาดหน้าต่างของตัวเองได้

$h = Get-Host
$buf = $h.UI.RawUI.BufferSize
$buf.Width = 300
$h.ui.rawui.BufferSize = $buf
$win = $h.UI.RawUI.WindowSize
$win.Width = 150
$h.ui.rawui.WindowSize = $win
#Command to start mongodb here.

สิ่งนี้จะสร้างหน้าต่างที่มีขนาด 150 แต่ยังมีบัฟเฟอร์เลื่อนด้านข้างที่ 300


ใช่ฉันได้พิจารณาแล้ว แต่ไม่รู้ว่าจะนำไปใช้อย่างไรในเวลานั้น สิ่งนี้ทำงานได้อย่างสมบูรณ์ยกเว้นความรำคาญเล็กน้อยที่อาจมีการปิดการใช้งานสคริปต์
Der Hochstapler

5

เท่าที่ผมเข้าใจคำถามที่คุณต้องการ MongoDB จะมีขนาดที่ระบุของหน้าต่างคอนโซลและเพื่อออกเมื่อคุณกด+Ctrl Cคำตอบนั้นง่ายมาก:ใช้ทางลัดเพื่อเริ่ม

ฉันไม่สามารถmongodเรียกใช้งานได้ดังนั้นฉันจะใช้perl.exeเป็นตัวอย่าง เมื่อคุณเริ่มจากไดอะล็อกRun ( Windows+ R) ขนาดของหน้าต่างคอนโซลจะเป็นมาตรฐาน 80 × 25 พร้อมขนาดบัฟเฟอร์สำหรับ 300 บรรทัด

  1. สร้างทางลัดไปที่mongod(หรือperlในกรณีของฉัน)
  2. คลิกขวาที่ทางลัดและคลิกคุณสมบัติ
    1. บนทางลัดแท็บในเป้าหมายmongodฟิลด์เพิ่มพารามิเตอร์
    2. เริ่มต้นในฟิลด์ควบคุมไดเรกทอรีปัจจุบันเริ่มต้นของโปรแกรมที่เริ่มต้น โดยค่าเริ่มต้นมันจะเป็นไดเรกทอรีที่เป็นที่ตั้งของ. exe
  3. คลิกเค้าโครงแท็บ
    1. เปลี่ยนขนาดหน้าต่างเป็น 140 × 70
      คุณสมบัติทางลัดแท็บเค้าโครง
    2. คุณสามารถเพิ่มขนาดความสูงของหน้าจอบัฟเฟอร์ได้เป็น 1,000 หรือมากกว่าเพื่อให้สามารถเลื่อนไปยังข้อความที่เก่ากว่าได้
    3. หากคุณล้างให้หน้าต่างระบบตำแหน่งคุณสามารถระบุตำแหน่งของหน้าต่างคอนโซลบนหน้าจอ
  4. คลิกตกลงเพื่อปิดคุณสมบัติทางลัด

ตอนนี้เมื่อคุณคลิกทางลัดนี้หน้าต่างคอนโซลจะมีขนาดที่ระบุ เมื่อคุณกดCtrl+ Cแอปพลิเคชันจะออกและหน้าต่างจะปิดโดยไม่มีการแจ้งเตือนเพิ่มเติมใด ๆ


คุณยังสามารถเปลี่ยนเลย์เอาต์ของหน้าต่างหลังจากเปิดใช้จากไดอะล็อกเรียกใช้ คลิกขวาที่ชื่อของหน้าต่างคอนโซลและคลิกคุณสมบัติ คลิกแท็บเค้าโครงปรับขนาดหน้าต่างแล้วคลิกตกลงเพื่อปิดคุณสมบัติและใช้การเปลี่ยนแปลงทันที (หากหน้าต่างเริ่มต้นจากทางลัดคุณสมบัติของทางลัดจะได้รับการอัพเดต)

ครั้งต่อไปที่คุณเริ่มแอปพลิเคชันเดียวกันขนาดของหน้าต่างคอนโซลจะมีขนาดเท่ากันอย่างน่าอัศจรรย์ (ฉันไม่ได้ตรวจสอบในครั้งนี้ แต่มันใช้งานได้)


ตำแหน่งของmongod.exeไม่ได้รับการแก้ไข มันจะเปลี่ยนไปขึ้นอยู่กับการปรับใช้แอปพลิเคชัน นี่คือเหตุผลที่ฉันตั้งเป้าหมายที่จะแก้ปัญหาผ่านทางคอนโซลโดยตรง เมื่อฉันใส่เส้นทางญาติในเป้าหมายหรือการทำงานสาขาไดเรกทอรีสำหรับทางลัดก็จะไม่ยอมรับพวกเขา :(
Der Hochstapler

@OliverSalzburg คุณลองใช้วิธีเริ่มแบตช์ใหม่หรือไม่ ฉันหมายความว่าแบทช์ของคุณเริ่มต้นเองstart cmd /kและผ่านพารามิเตอร์เพิ่มเติมหรือตั้งค่าตัวแปรสภาพแวดล้อม mongod.exeครั้งที่สองแล้วเปลี่ยนขนาดหน้าต่างคอนโซลและเริ่มต้น
Alexey Ivanov

ใช่ฉันลองหลายอย่างแล้ว แต่ตราบใดที่มีไฟล์แบตช์เกี่ยวข้องการแก้ปัญหาจะเกิดขึ้นจากTerminate batch job (Y/N)?พรอมต์: \ จริง ๆ แล้วฉันเพิ่งใช้แอปพลิเคชั่น wrapperเพื่อแก้ไขปัญหานี้ให้ฉัน
Der Hochstapler

@OliverSalzburg มันจะเป็นประโยชน์ที่มีประโยชน์มาก ฉันยังคิดว่าเสื้อคลุมจะเป็นวิธีเดียว ...
Alexey Ivanov

3

การตั้งค่าเค้าโครงคอนโซลเริ่มต้นอยู่ที่นี่ในรีจิสทรี:

[HKEY_CURRENT_USER\Console]

คุณสามารถแก้ไขการตั้งค่าเหล่านี้และจะใช้กับหน้าต่างคำสั่งทั้งหมดที่เรียกใช้โดยไม่คำนึงถึงเส้นทาง น่าเสียดายที่คุณค่าดิบนั้นไม่ได้เป็นมิตรกับมนุษย์

หากต้องการตั้งค่าในแบบที่คุณต้องการให้เปิดหน้าต่าง cmd ปกติแล้วแก้ไขการตั้งค่าตามที่คุณต้องการ ค้นหาในรีจิสทรีที่เส้นทางด้านบนและคุณควรเห็นคีย์ย่อยภายใต้ "คอนโซล" สำหรับ cmd.exe ส่งออกคีย์นั้นไปที่ไฟล์เปลี่ยนพา ธ ไปยังด้านบนและนำเข้าหรือเพียงคัดลอกค่าจากหนึ่งไปยังอีกด้วยตนเอง จากนั้นคุณสามารถลบรายการเฉพาะ cmd.exe ตอนนี้หน้าต่างคำสั่งทั้งหมดที่เปิดจะใช้ค่าเริ่มต้นที่แก้ไข

ฉันพบว่ามีประโยชน์ในการสร้างไฟล์รายการรีจิสตรีสองรายการด้วยค่าเริ่มต้นมาตรฐานของฉันดังนั้นฉันจึงสามารถเปิดดูไฟล์เหล่านั้นบนเซิร์ฟเวอร์ใหม่ได้อย่างง่ายดายเมื่อฉัน RDP เป็นครั้งแรก ฉันตั้งค่าล่วงหน้าสำหรับสองขนาดที่ฉันมักจะใช้

สำหรับ 1024 x 768 (ฉันใช้สิ่งนี้สำหรับเซิร์ฟเวอร์ที่เข้าถึงได้ตามปกติผ่านเครื่องมือ RDP หลายเซสชัน):

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Console]
"ScreenBufferSize"=dword:012c0050
"WindowSize"=dword:00190050
"WindowPosition"=dword:000a000a
"FontSize"=dword:000c0007
"FontFamily"=dword:00000030
"FontWeight"=dword:00000190
"FaceName"="Terminal"
"QuickEdit"=dword:00000001

สำหรับ 1280 x 1024:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Console]
"ScreenBufferSize"=dword:0bb800af
"WindowSize"=dword:004b00af
"WindowPosition"=dword:000a000a
"FontSize"=dword:000c0007
"FontFamily"=dword:00000030
"FontWeight"=dword:00000190
"FaceName"="Terminal"
"QuickEdit"=dword:00000001

0

วางStartคำสั่งไว้ด้านหน้าของการเรียก MongoDB ฉันเชื่อว่าควรแก้ไข


ไม่นั่นเปิด MongoDB ในหน้าต่างคอนโซลใหม่ เมื่อฉันใช้start /bมันจะเปิดหน้าต่างคอนโซลทิ้งไว้หลังจากฉันกด Ctrl + C
Der Hochstapler

0

หากคุณยินดีที่จะเรียกใช้แบตช์ไฟล์พร้อมกับโปรแกรมช่วยเหลือตัวเล็ก ๆ สองตัวโซลูชันที่สมบูรณ์จะโพสต์โดยฉันที่นี่:
ไฟล์แบตช์สามารถเรียกใช้โปรแกรมและกำหนดตำแหน่งและขนาดของหน้าต่างได้อย่างไร

เนื้อหาดังต่อไปนี้ . . .

ไฟล์แบตช์สาธิตนี้จะเรียกใช้โปรแกรมบรรทัดคำสั่งและกำหนดตำแหน่งและขนาดของหน้าต่างคอนโซลพร้อมท์คำสั่ง ชุดรูปแบบทั่วไปของชุดนี้เหมือนกับโซลูชันสองตัวก่อนหน้า (ที่หน้า Stack Overflow ในลิงค์ด้านบน) แต่มีปัญหาและวิธีแก้ไขเฉพาะที่จะทำให้งานนี้เป็นหน้าต่าง Prompt ที่โฮสต์โดย 'CMD .EXE 'และไม่ใช่หน้าต่าง GUI เช่น' EXPLORER.EXE '

อ่านความคิดเห็นทั้งหมดและคำอธิบายในไฟล์แบตช์สำหรับข้อมูลเพิ่มเติม

เครื่องมือที่ใช้:
1.   MonitorInfoView  โดย Nir Sofer (41 KB)
2.   NirCmd  โดย Nir Sofer (43 KB)
3.   GetPIDs  โดย Daniel Scheibli (280 KB)
4.   upx.exe  --- เป็นโปรแกรมบรรทัดคำสั่งที่เราจะใช้สำหรับการสาธิตนี้ วางไว้ในไดเรกทอรีเดียวกันกับไฟล์แบทช์
5. ไฟล์แบตช์ --- ดูด้านล่าง

รวบรวมทั้งห้าไฟล์ไว้ในไดเรกทอรี นี่เป็นไฟล์แบทช์พร้อมที่จะทำงานบนระบบ Windows ใด ๆ

สิ่งที่ชุดการสาธิตนี้จะทำนอกเหนือจากการนำเสนอคุณด้วยหน้าต่างคอนโซลแบบกำหนดเองจะทำงานupx.exeด้วยสวิตช์บรรทัดคำสั่งหรือไม่--best -v -o getpids-compressed.exe getpids.exe. เราจะบีบอัดเครื่องมือ 'GetPIDs' ของเราลงไปที่ 88 KB ........ หลังจากเปิดตัวดับเบิลคลิกที่แถบชื่อเรื่องของหน้าต่างคอนโซลนี้เพื่อดูปรากฏการณ์ที่น่าสนใจ หน้าต่างคอนโซลนี้ทำงานเหมือน GUI!

@echo off
setlocal enabledelayedexpansion enableextensions
pushd %~dp0%

REM ----- ADD SOME USEFUL INFORMATION TO THIS CONSOLE WINDOW TITLE.
for /f "tokens=3" %%A in ('getpids.exe') do set _PROCESS_ID_=%%A
title This batch file runs a command-line program and sets the position and size of its console window        (PROCESS ID = %_PROCESS_ID_%)

REM ********************** DESCRIPTION ************************************
REM ** This script opens a command-line program console window with specified
REM ** screen properties at the primary monitor (containing the taskbar).
REM ** The "X/Y position" and "W/H size" of the console window is auto-set by
REM ** this script and the monitor resolution is auto-calculated to suit.
REM ** 'MonitorInfoView.exe' is the helper tool used to capture the resolution
REM ** info of the monitor.
REM ** 'nircmd.exe' is the tool performing all the display trickery.
REM ** 'getpids.exe' is the helper tool used to capture the Process ID of the
REM ** working batch file, thus allowing us to identify which CMD.EXE host this
REM ** console window belongs to when looking at Task Manager.
REM **
REM ** To tweak this script, go to the code section named:
REM ** >>>>> USER INPUT/PREFERENCES ARE ALL SET HERE <<<<<
REM ***********************************************************************

REM ----- CLEAR ANY PREVIOUS JOB OUTPUTS IF THEY EXIST
if exist ~TMP.TXT type NUL > ~TMP.TXT

REM ----- OUTPUT THE PRIMARY MONITOR INFORMATION TO A TEXT FILE
MonitorInfoView.exe /hideinactivemonitors 1 /stext ~TMP.TXT

REM ----- ISOLATE THE RESOLUTION LINE, REMOVING ALL THE OTHER LINES IN THE TEXT FILE
for /f "delims=" %%A in ('type "~TMP.TXT" ^|find.exe /i "Maximum Resolution"') do echo %%A>~TMP.TXT

REM ----- GET THE RESOLUTION NUMBERS, AND SET THEM AS VARIABLES
for /f "tokens=3,4 delims=:X " %%A in ('type "~TMP.TXT"') do set _SCREENW_=%%A& set _SCREENH_=%%B


REM >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
REM >>>>>>>>>> USER INPUT/PREFERENCES ARE ALL SET HERE [BEGIN] <<<<<<<<<<<<

REM ----- ----------------------------------------
REM ----- |COMMAND-LINE PROGRAM TO BE RUN:  FILE NAME (WITH EXTENSION)
REM ----- |
REM ----- | |IF PROG TO BE RUN IS 'CMD.EXE' (WINDOWS COMMAND PROCESSOR)
REM ----- | |ALSO READ THE NEXT COMMENTS ABOUT SETTING SWITCHES   

    set _MYPROGRAM_=upx.exe

REM ----- ----------------------------------------   
REM ----- |COMMAND-LINE PROGRAM TO BE RUN:  SWITCHES (TO BE PASSED TO THE PROGRAM)
REM ----- |
REM ----- | |YOU CAN LEAVE THIS VARIABLE WITH A BLANK VALUE IF RUNNING THE PROG WITHOUT ANY PARAMETERS
REM ----- | | 
REM ----- | | |IF THE VALUE CONTAINS THE CHARS  '|'  OR  '<'  OR  '>'  THIS BATCH WILL FAIL TO RUN !!!
REM ----- | | |
REM ----- | | | |YOU CAN APPEND EXTRA TEXT TO THE END OF THE COMMAND BY USING THE AMPERSAND CHARACTER '&'
REM ----- | | | | EXAMPLES:
REM ----- | | | | set _MYPROGRAMSWITCHES_=dir "%systemroot%\system32" /a/o/s/4 & this text will be ignored; useful for adding some inline comments.
REM ----- | | | | set _MYPROGRAMSWITCHES_=dir "%systemroot%\system32" /a/o/s/4         & this works too, and the extra blank spaces will also be ignored.
REM ----- | | | | 
REM ----- | | | | |IF PROG TO BE RUN IS 'CMD.EXE' (WINDOWS COMMAND PROCESSOR), PATH ARGUMENTS MUST POINT TO A SPECIFIC LOCATION
REM ----- | | | | |AND BE ABSOLUTE OR INCLUDE ENVIRONMENT VARIABLES, AND ALWAYS ENCLOSE PATHS IN QUOTES.
REM ----- | | | | | EXAMPLES:
REM ----- | | | | | set _MYPROGRAMSWITCHES_=type "C:\Folder With Spaces\File.txt"
REM ----- | | | | | set _MYPROGRAMSWITCHES_=type "C:\FolderWithoutSpaces\File.txt"
REM ----- | | | | | set _MYPROGRAMSWITCHES_=type "%SYSTEMROOT%\..\Folder With Spaces\File.txt"
REM ----- | | | | | set _MYPROGRAMSWITCHES_=type "%SYSTEMROOT%\..\FolderWithoutSpaces\File.txt"
REM ----- | | | | | set _MYPROGRAMSWITCHES_=type %0                                       <<<<<<<this batch file (quotes are optional; the only exception to the rule)
REM ----- | | | | | set _MYPROGRAMSWITCHES_=type "%~dp0%\..\File.txt"                     <<<<<<<goes back one Dir from this batch file
REM ----- | | | | | set _MYPROGRAMSWITCHES_=type "%~dp0%\..\SomeFolder\File.txt"          <<<<<<<goes back one Dir from this batch file and then forwards into "SomeFolder"
REM ----- | | | | | set _MYPROGRAMSWITCHES_=dir "%systemroot%\system32" /a/o/s/4          <<<<<<<displays directory listing of the System folder. NOTE: 'dir' by itself and
REM ----- | | | | |                                                                                without a specific path argument will resolve to the folder of this batch file.

    set _MYPROGRAMSWITCHES_=--best -v -o getpids-compressed.exe getpids.exe      &// original is 280 KB, will compress down to 88 KB

REM ----- ----------------------------------------
REM ----- |COMMAND-LINE PROGRAM TO BE RUN:  DIRECTORY PATH (OF THE PROGRAM)
REM ----- | 
REM ----- | |YOU CAN LEAVE THIS VARIABLE WITH A BLANK VALUE IF THE PROG IS AT SAME LOCATION AS BATCH
REM ----- | |THIS VARIABLE WILL BE IGNORED IF THE PROG IS 'CMD.EXE'
REM ----- | | 
REM ----- | | EXAMPLES:
REM ----- | | set _MYPROGRAMDIR_=.\                               <<<<<<<relative path, program and batch in same directory
REM ----- | |                                                                  dot backslash *OR* dot (trailing backslash is optional).
REM ----- | | set _MYPROGRAMDIR_=%dp0%                            <<<<<<<relative path, program and batch in same directory
REM ----- | |                                                                  same locatiion as previous but using environment variable.
REM ----- | | set _MYPROGRAMDIR_=..\                              <<<<<<<relative path, program is back one directory from batch
REM ----- | |                                                                  dot dot backslash *OR* dot dot (trailing backslash is optional).
REM ----- | | set _MYPROGRAMDIR_=%dp0%\..                         <<<<<<<relative path, program is back one directory from batch
REM ----- | |                                                                  same as location as previous but using environment variable.
REM ----- | | set _MYPROGRAMDIR_=%SYSTEMROOT%\..\My Utilities     <<<<<<<relative path, program is back one directory from the Windows folder
REM ----- | |                                                                  and then forwards into the folder 'My Utilities'
REM ----- | | set _MYPROGRAMDIR_=C:\My Utilities\                 <<<<<<<absolute path, enclosing quotes are optional; trailing backslash is optional
REM ----- | |                                                                  same location as previous

    set _MYPROGRAMDIR_=

REM ----- ----------------------------------------
REM ----- |SET THE WANTED DIMENSIONS OF THIS CONSOLE WINDOW

    set /a _WINW_=(%_SCREENW_% / 2) + 250
    set /a _WINH_=(%_SCREENH_% / 2) + 150
    set /a _WINX_=(%_SCREENW_% - %_WINW_%) / 2
    set /a _WINY_=(%_SCREENH_% - %_WINH_%) / 2

REM ----- ----------------------------------------
REM ----- |STYLE THIS CONSOLE WINDOW   !!!IMPORTANT!!!
REM ----- |
REM ----- | |IF WE DO NOT USE THE 'MODE' COMMAND HERE ALONG WITH ITS 'COLS/LINES' VALUES THEN
REM ----- | |THE POSITIONING/SIZING OF THIS WINDOW BY 'NIRCMD.EXE' FURTHER DOWN WILL NOT WORK !!!
REM ----- | |
REM ----- | | |SOME COMMANDS WILL OUTPUT A LOT OF LINES AND AND THE CONSOLE DISPLAY WILL BE TRUNCATED
REM ----- | | |RUN THIS FOR AN EXAMPLE=====>   cmd.exe dir "%systemroot%\system32" /a/o/s/4   <=====
REM ----- | | |TO SOLVE THIS PROBLEM, SET THE 'LINES' VALUE OF 'MODE' TO A VERY HIGH NUMBER
REM ----- | | |THE MAXIMUM NUMBER IS 32000 (ON MY SYSTEM); 'MODE' WILL BE IGNORED IF THE NUMBER IS HIGHER !!!   

    color 0A
    mode.com con:cols=%_SCREENW_% lines=10000

REM ----- ----------------------------------------
REM ----- |DELETE THE TEMP TEXT FILE MADE BY 'MonitorInfoView.exe'
REM ----- |COMMENT OUT THE LINE IF YOU DON'T CARE ABOUT DELETING IT

    del /f /q ~TMP.TXT 2>nul >nul

REM >>>>>>>>>> USER INPUT/PREFERENCES ARE ALL SET HERE [END] <<<<<<<<<<<<<<
REM >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<


REM ----- RUN THE TASK . . .
nircmd.exe win setsize foreground %_WINX_% %_WINY_% %_WINW_% %_WINH_%
popd

if not defined _MYPROGRAMDIR_ set _MYPROGRAMDIR_=%~dp0
if "!_MYPROGRAMDIR_!" == "." set _MYPROGRAMDIR_=%~dp0
if "!_MYPROGRAMDIR_!" == ".\" set _MYPROGRAMDIR_=%~dp0
pushd %_MYPROGRAMDIR_%
if not exist %_MYPROGRAMDIR_% goto _SKIP_
set _CONVERT_PATH_="%CD%"
set _CONVERT_PATH_=%_CONVERT_PATH_:"=%
set _MYPROGRAMDIR_=%_CONVERT_PATH_%
:_SKIP_
popd

echo ===============================================================================
echo PROGRAM ..............: !_MYPROGRAM_!
if "!_MYPROGRAM_!"=="cmd.exe" (echo PROGRAM DIR ..........: %SYSTEMROOT%\system32) else (echo PROGRAM DIR ..........: !_MYPROGRAMDIR_!)
echo PROGRAM SWITCHES .....: !_MYPROGRAMSWITCHES_!
echo ===============================================================================

if "!_MYPROGRAM_!"=="cmd.exe" (goto _PROGRAM_IS_CMD_) else (goto _PROGRAM_IS_OTHER_)

:_PROGRAM_IS_CMD_
cd /d "%SYSTEMROOT%\system32"
!_MYPROGRAMSWITCHES_!
echo. & echo. & echo.
goto _END_

:_PROGRAM_IS_OTHER_ 
cd /d "!_MYPROGRAMDIR_!"
if "%CD%\!_MYPROGRAM_!" == "%CD%\" goto _ERRORMESSAGE_
if not exist "%CD%\!_MYPROGRAM_!" goto _ERRORMESSAGE_
"!_MYPROGRAMDIR_!\!_MYPROGRAM_!" !_MYPROGRAMSWITCHES_!
echo. & echo. & echo.
goto _END_

:_ERRORMESSAGE_
cls
color 4F
echo ===============================================================================
echo PROGRAM ..............: !_MYPROGRAM_!
echo PROGRAM DIR ..........: !_MYPROGRAMDIR_!
echo PROGRAM SWITCHES .....: !_MYPROGRAMSWITCHES_!
echo ===============================================================================
echo                        ^^!^^!^^!  E R R O R  ^^!^^!^^!
echo.
echo The program has failed to run; the path set by the above values does not exist.
echo Please exit this window and check the values you have set in this batch file.
echo.
echo This batch file is located here:
echo %0
echo. & echo. & echo. & echo. & echo.

:_END_

REM ----- CLEAR VARIABLE VALUES FROM MEMORY . . .
set _PROCESS_ID_=
set _SCREENW_=
set _SCREENH_=
set _MYPROGRAM_=
set _MYPROGRAMSWITCHES_=
set _MYPROGRAMDIR_=
set _WINW_=
set _WINH_=
set _WINX_=
set _WINY_=
set _CONVERT_PATH_=

REM ----- STOP THIS CONSOLE WINDOW FROM CLOSING   !!!IMPORTANT!!! . . .
REM ----- |
REM ----- | http://superuser.com/questions/306167/how-to-prevent-the-command-prompt-from-closing-after-execution
REM ----- | | by 'kitsu.eb' (April 26, 2014)
REM ----- | | | "My solution (just tested on Win7) is to add CMD as the last line in the batch file.
REM ----- | | |  This runs a nested command prompt that inherits the environment of its parent.
REM ----- | | |  That child shell holds the batch process open until you EXIT, at which point the
REM ----- | | |  batch has no child processes and also exits."
REM ----- | Comment . . .
REM ----- | | by me
REM ----- | | | "This is a workaround. You can't use PAUSE as the last command to stop this window from closing
REM ----- | | |  because the window will terminate after you press a key. While this batch is running, if you open
REM ----- | | |  Task Manager/Process Hacker/Process Explorer you will see an extra CMD.EXE child process running
REM ----- | | |  under the parent CMD.EXE of this batch file."
cmd.exe

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