필자가 작성한 윈도즈 명령창 프로그램은 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로 파일명을 변경하여 사용해야 한다.
댓글