Plik .bat zapisujący dane


(Multi 808) #1

Witam, potrzebuje pliku .bat który zapisuje w sobie to co ktoś wpisze. Taki wzór. nie wiem jak to pokazać:

(Wiadomość - to co wyświetli się użytkownikowi w stylu @echo , sam to edytuje)

 

Wiadomość 1

Wiadomość 2

Wiadomość 3

Wpisz Dane1:

(tu użytkownik wpisuje Dane1)

Wpisz Dane2:

(tu użytkownik wpisuje Dane2)

Wiadomość 4

Wiadomość 5

 

Chodzi mi o to, żeby to co użytkownik wpiszę, zapisywało się na stałe w tym pliku .bat. Na końcu pliku czy coś. Albo żeby tworzył plik .txt w którym będzie to co on wpisał. Dobrze by było gdyby ten plik txt miał inne rozszerzenie w stylu .wololo :slight_smile:

Da się coś takiego stworzyć w .bat ? Ew w jakimś innym programie tak abym mógł sam edytować te wyświetlanie wiadomości ?

 

 


(bachus) #2
set /p ZAPYAJ=Pytanie jakies
echo %ZAPYTAJ% >> C:\wprowadone_dane.wololo
set /p ZAPYAJ=Pytane drugie
echo %ZAPYTAJ% > C:\wprowadone_dane.wololo

(Multi 808) #3

W utworzonym pliku pokazuje “ECHO is on” a nie te dane, które wpisuje.  Poza tym pokazuje “C:\users\mojanazwa\desktop>set /p ZAPYAJ=Pytanie jakies” . Da się tak, żeby tego nie pokazywało w konsoli ?

 

Wina tego, że nie zapisywało to literówka w ZAPYTAJ. Naprawiłem, ale zapisuje tylko to co jest w pytaniu drugim. Pierwsze ignoruje i nie zapisuje :frowning:


(bachus) #4

Z palca pisałem bez testów. W kolejnych pytaniach też dawaj dwa znaki >> Jak jest jeden, to plik jest nadpisywany.

echo %ZAPYTAJ% >> C:\wprowadone_dane.wololo

Na początku skryptu możesz dodać linię:

@echo off

(Multi 808) #5

Dzięki,a da się zrobić tak, żeby jak skrypt zrobi ten plik to żeby w nim już był jakiś tekst np coś koło 100 linijek a te odpowiedzi były by zapisywane dajmy na to w linijcie 56 i 49 ? Albo losowo ? Obojętnie.

I jak już się tak wyleniłem trochę to wiesz może też jak dać coś w stylu żeby skrypt zaczekał 1s ? Np @echo WITAM (tu ten kod odczekujący sekundę) @echo witam2 ? I czy da radę zrobić coś w stylu łaska ładowania ? np. -------- i żeby to się pokazywało co 0.5s jedna kreska ale nie w następnej linijcie tylko dalej w tej ? Tak, wiem, zielony jestem  :frowning:


(bachus) #6

Za bardzo nie rozumiem o co mnie pytasz… Przerzuć się na PowerShell, bo .cmd/batch jest za bardzo ograniczony.

 

  1. W danej linii dodanie tekstu:

    set PLIK_DOCELOWY=nazwa_pliku.txt
    set NUMER_LINII=49

    set n=0
    for /F “tokens=*” %%i in (%PLIK_DOCELOWY%) do call :DODAJ %%i
    exit /b 0

    :DODAJ
    set /a n+=1
    if %n%==%NUMER_LINII% (echo %DODAWANY_TEKST%) else echo %*
    exit /b 0

  2. odczekanie chwili:

    @ping 192.2.2.2 -n 1 -w 1000 > nul

Co to jest łaska ładowania? Tu masz przykłady (jak wspomniałem, batch jest bardzo ograniczony, trzeba stosować sztuczki: http://ss64.org/viewtopic.php?id=1499


(Multi 808) #7

Chodziło mi o paska ładowania  :D Przepraszam  :( Wiem, że o dużo prosze ale niestety jestem bardzo zielony a baardzo tego potrzebuje  :frowning:


(bachus) #8

Pasek ładowania, nie “paska ładowania”.  Dodanie tekstu w danym miejscu już Ci napisałem, dosostosuj sobie do swojego skryptu.


(Multi 808) #9

A mógłbyś to jakoś wytłumaczyć ? Nie ogarniam zbytnio tego :smiley: Czarna magia

No widze, że to dodanie tekstu w danej linijce jest, ale jak zapełnić te inne linijki z losowymi znakami ? 

 

I to musi być all w batchu bo Power Shella jeszcze bardziej nie ogarniam (bo nie mialem z nim styczności) od batcha.

 

Mógłbyś napisać CAŁOŚĆ w jednym kodzie ? Bo mam mały problem z łączeniem tego. Nie wiem gdzie co i jak xd


(bachus) #10

Przykro mi, konkretnego kodu Ci nie dam. Daj coś od siebie. Napisz której części nie rozumiesz. Generacja losowych ciągów znaków:

http://forums.techguy.org/software-development/803268-random-numbers-letters.html


(Multi 808) #11

Dobra poradziłem sobie, z tym, że jak dam więcej niż 2 pytania, daje te >>> (bo trzecie pytanie) i niestety tego trzeciego już nie zapisuje :frowning:

 

Da radę zrobić plik .exe który wykona ten napisany kod ?


(bachus) #12

Wystarczy dwa (>>)

.exe - .cmd/batch “idzie” przez interpreter poleceń, to nie wymaga kompilatora; google podaje dużo konwerterów, spróbuj któryś i podziel się wynikami. Wpisz w google:

batch to exe converter

Wyników jest dużo:

http://www.f2ko.de/en/b2e.php


(Multi 808) #13

Ok dzięki za poradę,a da radę zrobić tak, żeby ten plik był tworzony na pulpicie bez podawania ścieżki ? Bo jak będzie kopiowany na różne komputery to nie będzie taka sama nazwa użytkownika wszędzie.

Edit: Ok już nie trzeba. Dzięki za wszystko 


(bachus) #14

Zainteresuj się ścieżkami w systemie operacyjnym i zmiennymi. Zobacz co pokaże:

echo %username%
echo %homepath%
echo %homepath%\desktop

http://ss64.com/nt/syntax-variables.html

Zobacz też sobie, co pokaże komenda: SET  (jakie masz aktualnie zmienne ustalone).