Skocz do zawartości

Czy da się dodać 2 zmienne w jednej linii set /p w Batch?


Idź do rozwiązania Problem ogarnięty przez lockman,

Recommended Posts

Witam,

 

Mam problem z moim skryptem. Ostatnio bawiłem się konsolą Windows i napisałem prosty program szyfrujący. Mam jednak problem. Ponieważ nie wiem jak dodać 2 zmienne w jednym poleceniu ( o ile to w ogóle możliwe ). Wyjaśnię o co chodzi.

 

Po zaszyfrowaniu wiadomości wynik jest np. taki:

101 102 121 133 144

 

I tutaj problem jest w tym, że jak chciałbym odszyfrować ten wyraz, to muszę wpisywać to osobno, a nie mogę wkleić jako całość.

 

Tutaj kawałek problematycznego kodu:

:start

set /p liczba=

set liczba%powtorzenie%=%liczba%

set /a powtorzenie=%powtorzenie%+1

goto start

 

I tutaj moje pytanie, czy da się w tym set /p ustalić, by po wklejeniu kilku wartości każda z nich przypisywana była do innej zmiennej. Np. 101 - liczba1, 102 - liczba2, itd.

 

PROSZĘ O POMOC!


Czy jest w stanie mi ktoś pomóc?

Edytowane przez MiniKPLayer
Link to post
Share on other sites

Cześć,

 

a nie lepiej dane o których napisałeś potraktować jako listę wartości dla parametru, coś w stylu:

param([String[]] $slowa)

a potem 

foreach ($s in $slowa)

p.s. Możliwe, iż nie do końca poprawnie użyłem składni (dawno nie pisałem skryptu w PS)

Edytowane przez lockman
Link to post
Share on other sites

Cześć,

 

a nie lepiej dane o których napisałeś potraktować jako listę wartości dla parametru, coś w stylu:

param([String[]] $slowa)

a potem 

foreach ($s in $slowa)

p.s. Możliwe, iż nie do końca poprawnie użyłem składni (dawno nie pisałem skryptu w PS)

 

 

Ostatnio bawiłem się konsolą Windows
 

 

Nie chodzi mi o PowerShella :)

Link to post
Share on other sites

W sumie fakt,  w ogóle nie napisałeś dla jakiej powłoki/języka napisałeś skrypt  :D Warto, byś napisał coś więcej na temat w czym to jest napisane itd...

 

Poza tym,, nawet jak nie napisałeś tego w PS, to czy nie możesz tego co masz  opakować w PS i rozwiązać to opisanym przeze mnie sposobem? 

Link to post
Share on other sites

No niby mogę, ale chciałbym mniej więcej wiedzieć co piszę, a także co oznaczają poszczególne frazy. Gdyż z twojego rozwiązania nie rozumiem absolutnie nic co tak na prawdę jest interpretowane i jak mógłbym to jeszcze kiedyś inaczej wykorzystać. Jakbyś mógł mi opisać co oznaczają poszczególne części tego 

 

param([string[]] $slowa) a potem  foreach ($s in $slowa)
to byłoby miło :)
Link to post
Share on other sites
  • Rozwiązanie

Ok, to może na szybko na przykładzie.

 

Zamiast twojego skryptu użyje prostego w PS nazwę go szyfr.ps1

Write-Output '101 102 121 133 144'

generalnie zwraca wynik: 101 102 121 133 144

 

Skrypt który będzie czytał powyższe dane nazwę rozszyfruj.ps1:

param(
[Parameter(Position = 0,
 Mandatory=$true, 
 ValueFromPipeline=$true,
 ValueFromPipelineByPropertyName=$true)
]
[String] $slowa
)

$slowo = $slowa.split(' ')

foreach ($s in $slowo)
{
  Write-Output 'Tutaj rozszyfrowuje słowa'
  Write-Output $s
}

Teraz jak wywołasz komendę:

c:\> .\szyfr.ps1 | .\rozszyfroj.ps1

otrzymasz coś takiego:

Tutaj rozszyfrowuje słowa
101
102
121
133
144

p.s. fakt że w poprzedniej odpowiedzi nie wziąłem pod uwagę, iż liczby masz oddzielone spacją a nie przecinkiem, więc musiałem zastosować split, bo powershell domyślnie rozdziela wartości przecinkami.

Edytowane przez lockman
  • Popieram 1
Link to post
Share on other sites

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Odpowiedz w tym wątku...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...