본문 바로가기
카테고리 없음

GUI 만드는 방법

by treeCoder 2025. 2. 1.

필자가 작성한 윈도즈 명령창 프로그램은 3개의 인수가 필요한데, 이를 초보적이나마 GUI 형태로 만들어 보았다.

 

split37.exe         %filePrefix%        %linesPerFIle%   <      %file%

 

프로그램 이름과  3개의 인풋 변수가 필요하다. 맨 마지막은 Input File 이다.

@echo off
chcp 65001 > NUL

setlocal enabledelayedexpansion

rem 111111111111111111111
rem 111111111111111111111
set "msg=Enter the lines per file:"
set "defaultTitle2=Lines per File"
set "defaultValue2=400"
call :GetUserInput
set userInput=%var2%

:: Check if user input is not empty
if not "%userInput%"=="" (
    :: Use the predefined value when user input is not empty
    echo you entered %userInput%
) else (
    echo No input provided; using the default value of 400.
    set "userInput=400"
)
set linesPerFile=%userInput%

rem 222222222222222222222
rem 222222222222222222222
set "msg=Enter the file prefix:"
set "defaultTitle2=File Name Prefix"
set "defaultValue2=$F"
call :GetUserInput
set userInput=%var2%

:: Check if user input is not empty
if not "%userInput%"=="" (
    :: Use the predefined value when user input is not empty
    echo you entered %userInput%
) else (
    echo No input provided; using the default value of $F.
    set "userInput=$F"
)
set filePrefix=%userInput%

rem 333333333333333333333
rem 333333333333333333333
call :GetUserFile
set file=%var1%

rem 4444444444444444444444
rem      M A I N part
rem      M A I N part
rem      M A I N part
rem 4444444444444444444444

IF NOT "%var1%"=="" (
    Call :The_Job
) ELSE (
    echo No file provided; program ended
)

timeout/t 10
goto :eof

:The_Job
split37.exe %filePrefix%     %linesPerFIle%   <   %file%
goto :eof

rem ***********************************
rem    G U I   S U B R O U T I N E S
rem    G U I   S U B R O U T I N E S
rem    G U I   S U B R O U T I N E S
rem ***********************************

:GetUserFile
rem ******************************************************************
:: Use PowerShell to select a file
set cmd1=powershell -NoP -C "[System.Reflection.Assembly]::LoadWithPartialName
set cmd1=%cmd1%('System.Windows.Forms')|Out-Null;

set cmd1=%cmd1%$OFD = New-Object System.Windows.Forms.OpenFileDialog;
set cmd1=%cmd1%$OFD.Multiselect = $false;
set cmd1=%cmd1%$OFD.Filter = 'TXT (*.txt)| *.txt';
set cmd1=%cmd1%$OFD.InitialDirectory = pwd;
set cmd1=%cmd1%$OFD.ShowDialog()|out-null;
set cmd1=%cmd1%$OFD.FileNames"

for /f "delims=" %%I in ('%cmd1%') do (
    set var1=%%~nxI
)
goto :eof
rem ******************************************************************

:GetUserInput
rem ******************************************************************
:: Create a temporary VBScript file to get user input with a default value
echo Set objShell = CreateObject("WScript.Shell") > GetInput.vbs
echo InputValue = InputBox("%msg%", "%defaultTitle2%", "%defaultValue2%") >> GetInput.vbs
echo WScript.Echo InputValue >> GetInput.vbs

:: Run the VBScript to get user input
for /f %%I in ('cscript /nologo GetInput.vbs') do set var2=%%I

:: Remove the temporary VBScript file
del GetInput.vbs
goto :eof
rem ******************************************************************

 

 

개인프로젝트의 하나로서 파일을 올려 놓음. _xF.bat로 파일명을 변경하여 사용해야 한다.

_xF.bat.txt
0.00MB

 

댓글