DosTips.com

A Forum all about DOS Batch
It is currently 30 Jul 2016 07:04

All times are UTC-06:00




Post new topic  Reply to topic  [ 19 posts ]  Go to page 1 2 Next
Author Message
PostPosted: 17 Apr 2012 03:49 
Offline

Joined: 26 Oct 2011 22:38
Posts: 1007
Location: Egypt
i'm making a batch file to install manual update to an online game so i'm missing one thing,
how can i ask to input to the location of a folder that has that update patches

This is the final Code and working fine Problem solved
Code:
@echo off
Title Fiesta Manual Update Installer V3.0
::======================================================================
SETLOCAL EnableDelayedExpansion
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
set "DEL=%%a"
)
::======================================================================
mode 60,30
color 0
echo:&echo:&echo:&echo:&echo:&echo:&echo:&echo:&echo:&echo:
echo:     ######## #### ########  ######  ########    ###   
echo:     ##        ##  ##       ##    ##    ##      ## ##   
echo:     ##        ##  ##       ##          ##     ##   ## 
echo:     ######    ##  ######    ######     ##    ##     ##
echo:     ##        ##  ##             ##    ##    #########
echo:     ##        ##  ##       ##    ##    ##    ##     ##
echo:     ##       #### ########  ######     ##    ##     ##
echo:&echo:&echo:&echo:&echo:&echo:
call :color 0f "                         Enter                            "
pause >nul
cls
color 07

::======================================================================
:loop1
echo:&echo:&echo:&echo:&echo:
call :color 07 "            ==================================" &echo:
call :color 07 "            =" & call :color 0d "Fiesta Manual Update Installer" & call :color 07 "=" & echo:
call :color 07 "            ==================================" &echo:&echo:
call :color 0f "             Select An Option" &echo:&echo:&echo:
call :color 0a "                  (1) Auto Install" &echo:&echo:
call :color 0b "                  (2) Install Patches" &echo:&echo:
call :color 0e "                  (3) Install Sharplaunchers" &echo:&echo:
call :color 08 "                  (4) Exit" &echo:&echo:&echo:
set /p "cho1=Option #"
if %errorlevel%==1 cls & goto loop1
if %cho1%==1 goto auto
if %cho1%==2 goto patches
if %cho1%==3 goto sharplaunchers
if %cho1%==4 goto EOF
echo Invalid choice.
cls
goto loop1
::======================================================================
:auto
echo:
call :color 0c "Enter sharp launchers and patches Directory "&echo:
set /p "installpath=Dir:>"
if %errorlevel%==1 cls & goto loop1
call :color 04 "Installing Sharplaunchers and Patches ..."&echo:
if exist "%temp%\log.log" del /F /Q "%temp%\log.log" >nul
ping localhost -n 2 >nul

setlocal enableextensions
set log=%temp%\log.log
for /f "tokens=*" %%c in ('dir /b /on "%installpath%\*.*"') do (
echo %installpath%\%%c >>"%log%"
)
for /f "tokens=*" %%d in (%log%) do (
start "" /w "%%d"
)
msg * Auto Installation Completed.
msg * Please Restart Your Computer so Changes can take Effect.
cls
goto loop1
::======================================================================
:sharplaunchers
echo:
call :color 0c "Enter sharplaunchers Directory "&echo:
set /p "installpath=Dir:>"
if %errorlevel%==1 cls & goto loop1
call :color 04 "Installing Sharplaunchers ..."&echo:
if exist "%temp%\log.log" del /F /Q "%temp%\log.log" >nul
ping localhost -n 2 >nul

setlocal enableextensions
set log=%temp%\log.log
for /f "tokens=*" %%c in ('dir /b /on "%installpath%\*.*"') do (
echo %installpath%\%%c >>"%log%"
)
for /f "tokens=*" %%d in (%log%) do (
start "" /w "%%d"
)
msg * SharpLaunchers Installation Completed.
msg * Please Restart Your Computer so Changes can take Effect.
cls
goto loop1
::======================================================================
:patches
echo:
call :color 0c "Enter patches Directory "&echo:
set /p "installpath=Dir:>"
if %errorlevel%==1 cls & goto loop1
call :color 04 "Installing Patches ..."&echo:
if exist "%temp%\log.log" del /F /Q "%temp%\log.log" >nul
ping localhost -n 2 >nul

setlocal enableextensions
set log=%temp%\log.log
for /f "tokens=*" %%c in ('dir /b /on "%installpath%\*.*"') do (
echo %installpath%\%%c >>"%log%"
)
for /f "tokens=*" %%d in (%log%) do (
start "" /w "%%d"
)
msg * Patches Installation Completed.
cls
goto loop1
::======================================================================
:color
echo off
<nul set /p ".="%DEL% " " >> "%~2"
findstr /v /a:%1 /R "^$" "%~2" nul
del "%~2" > nul 2>&1
goto :eof
::======================================================================


Last edited by abc0502 on 19 Apr 2012 12:06, edited 9 times in total.

Top
   
 Post subject: Re: specify a directory
PostPosted: 17 Apr 2012 04:46 
Offline
Expert

Joined: 10 Feb 2012 02:20
Posts: 5829
abc0502 wrote:
i'm making a batch file to install manual update to an online game so i'm missing one thing,
how can i ask to input the location of a folder that has that update patches

i tried this to input the location but it keep run the next command directly without waiting for the input so it give errors:

:auto
Echo Enter Directory:
set "variable="
set /p "variable=install>"
if not defined variable goto :auto
Echo Installing Sharplaunchers and Patches ...
ping localhost -n 3 >nul
"%installpath%\SharpLauncher86b.exe"




Top
   
 Post subject: Re: specify a directory
PostPosted: 17 Apr 2012 05:52 
Offline

Joined: 26 Oct 2011 22:38
Posts: 1007
Location: Egypt
Thanks alot foxi for your replay but not all the code worked,only this worked

:auto
Echo Enter Directory:
set /p "variable=install>"
Echo Installing Sharplaunchers and Patches ...
ping localhost -n 3 >nul
"%installpath%\SharpLauncher86b.exe"

and it will look like that:
Code:
:auto
Echo Enter Directory:
set /p "installpath=Directory>"
Echo Installing Sharplaunchers and Patches ...
ping localhost -n 3 >nul
"%installpath%\SharpLauncher86b.exe"

it geive errors for not finding the files then goto the start again
thanks :)


Top
   
PostPosted: 17 Apr 2012 06:04 
Offline

Joined: 26 Oct 2011 22:38
Posts: 1007
Location: Egypt
one more thing :)
is there away to get the files "exe files" names and list them in alphapit order so the command install it one by one
and i don't have to add new patches name to the batch regulary, i tried using for command to get all files names to a log file then launche them one by one but "getting there names from the log file didn't work any idea

i tried using !k's Code for renaming and change it to start files but no luck:
Code:
@echo off &setlocal enableextensions

set /a cnt=0
for /f "delims=" %%a in ('dir /b /on *.txt') do call :ren "%%a"
goto :eof

:ren
for /f "tokens=1" %%b in ('more +%cnt% log.log') do (
   ren %1 "%%b.txt"
   set /a cnt+=1 &goto :eof
)


Top
   
 Post subject: Re: specify a directory
PostPosted: 17 Apr 2012 06:35 
Offline

Joined: 26 Oct 2011 22:38
Posts: 1007
Location: Egypt
I used this but getting the more is not a command error !! :?:
Code:
@echo off
cls
setlocal enableextensions
set path=%userprofile%\desktop\test
set /a cnt=0
for /f "delims=" %%a in ('dir /b /on "%path%\*.*"') do call :ren "%%a"
goto :eof

:ren
for /f "tokens=1" %%b in ('more +%cnt% log.log') do (
   "%%b.cmd"
   set /a cnt+=1 &goto :eof
)
pause


Top
   
 Post subject: Re: specify a directory
PostPosted: 17 Apr 2012 07:16 
Offline
Expert

Joined: 17 Oct 2009 08:30
Posts: 378
Location: Russia
set folder=%userprofile%\desktop\test


Top
   
 Post subject: Re: specify a directory
PostPosted: 17 Apr 2012 07:29 
Offline
Expert

Joined: 10 Feb 2012 02:20
Posts: 5829
abc0502 wrote:
Thanks alot foxi for your replay but not all the code worked,only this worked


When faced with an issue like this, try separating the function and see if it works.

My code below works fine in a subroutine of it's own.

Code:
@echo off
:auto
Echo Enter Directory:
set "variable="
set /p "variable=install>"
if not defined variable goto :auto
echo "%variable%"
pause


Quote:
Enter Directory:
install>abc def
"abc def"



Top
   
 Post subject: Re: specify a directory
PostPosted: 19 Apr 2012 03:23 
Offline

Joined: 26 Oct 2011 22:38
Posts: 1007
Location: Egypt
Thanks Foxidrive and !k for help :D :D :D
it worked and now i don't have to edit the batch on every new patches for the game
it read the folder containing the patches and make a list in alphapitc order then start every patch at a time.

i will post the code after small changes.
The batch will be in colors :evil:


Top
   
 Post subject: Re: specify a directory
PostPosted: 19 Apr 2012 06:17 
Offline

Joined: 26 Oct 2011 22:38
Posts: 1007
Location: Egypt
The First Code Was Modified with the working code


Last edited by abc0502 on 19 Apr 2012 07:34, edited 3 times in total.

Top
   
PostPosted: 19 Apr 2012 06:23 
Offline
Expert

Joined: 10 Feb 2012 02:20
Posts: 5829
You will get an error if the user enters nothing.

And %cho1% should be nulled before the set /p or it can take the value it had before the set /p, if enter was pressed.



Quote:
set /p "cho1=Option #"
if %cho1%==1 goto auto
if %cho1%==2 goto patches
if %cho1%==3 goto sharplaunchers
if %cho1%==4 goto EOF
echo Invalid choice.
cls
goto loop1



Try this:

Code:
@echo off
:auto
set "variable=zzz"
set /p "variable=press enter: "
if not defined variable goto :auto
echo "%variable%"
pause


Top
   
PostPosted: 19 Apr 2012 07:01 
Offline

Joined: 26 Oct 2011 22:38
Posts: 1007
Location: Egypt
WOW :roll: i didn't notice that thanks alot foxidrive ,
i changed the code now it work fine
and as u said in your last post i should used it from the begining :)


Top
   
PostPosted: 19 Apr 2012 07:13 
Offline
Expert

Joined: 10 Feb 2012 02:20
Posts: 5829
This will not run any program in %%d.

Quote:
start /w "%%d"


The first pair of quotes in a start command are used for the title.

You need this:

Code:
start "" /w "%%d"


Top
   
PostPosted: 19 Apr 2012 07:20 
Offline

Joined: 26 Oct 2011 22:38
Posts: 1007
Location: Egypt
when i add
Code:
if not defined %installpath% goto :loop1

nothing is installed or run
when i delete it every thing start normally why?


Top
   
PostPosted: 19 Apr 2012 07:32 
Offline

Joined: 26 Oct 2011 22:38
Posts: 1007
Location: Egypt
foxidrive wrote:
This will not run any program in %%d.

Quote:
start /w "%%d"


The first pair of quotes in a start command are used for the title.

You need this:

Code:
start "" /w "%%d"

the folder that will be specified will have only patches that will be ordered in alphapitic order then will be run one by on the patches are auto start so the code work fine with this patches


Top
   
PostPosted: 19 Apr 2012 07:39 
Offline
Expert

Joined: 10 Feb 2012 02:20
Posts: 5829
abc0502 wrote:
when i add
Code:
if not defined %installpath% goto :loop1

nothing is installed or run
when i delete it every thing start normally why?


Quote:
if not defined installpath goto :loop1


Don't use quotes.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 19 posts ]  Go to page 1 2 Next

All times are UTC-06:00


Who is online

Users browsing this forum: Bing [Bot], Yahoo [Bot] and 8 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited