Skocz do zawartości


tablety.pl
Zdjęcie

Skrypt PowerShell (kłopot ze skladnią)




  • Zamknięty Temat jest zamknięty
11 odpowiedzi w tym temacie

#1 luck_skywalker

luck_skywalker

    First Rank

  • Użytkownicy
  • 7 postów
  • Płeć:Mężczyzna
  • Lokalizacja:Bukowno

Napisano 13 08 2009 - 09:10

Nie jestem zaawansowanym użytkownikiem PowerShell. Szukałem rozwiązania w Internecie, lecz nic się nie dowiedziałem.

Otóż mam problem tego typu/ Skrypt wyświetla sumarycznie zajętość plików w katalogach (tutaj przykładowo):
...

"Nie używane przez ostatnie $dni dni"
"------------------------"
"$dir0  {0:#.00 GB} (bajtów: $size)" -f ($size/(1073741827))
"$dir1  {0:#.00 GB} (bajtów: $size)" -f ($size/(1073741827))
...
co w konsoli mi się wyświetla prawidłowo:

Nie używane przez ostatnie 30 dni
------------------------
C:\Windows\   28,60 GB (bajtów: 30708227364)
C:\Program Files\ 195,11 GB (bajtów: 209493521858)

Natomiast w dalszej części skryptu wysyłam to e-mailem :
...
$emailFrom = "test@test.pl"
$emailPass = "test"
$emailTo = "nobody@nowhere.pl"
$subject = "Test powershell"
$body = 
"Nie używane przez ostatnie $dni dni"
"------------------------"
"$dir0 {0:#.00 GB} (bajtów: $size)" -f ($size/(1073741827))
"$dir1 {0:#.00 GB} (bajtów: $size)" -f ($size/(1073741827))

$smtpServer = "open-relay.com.pl"
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($emailFrom, $emailTo, $subject, $body)

...

Dostaję e-maila o treści:
Nie używane przez ostatnie 30 dni
------------------------
C:\Windows\  {0:#.00 GB} (bajtów: 6261565112) -f 5,86699035987168
C:\Program Files\ {0:#.00 GB} (bajtów: 209493521858) -f 195,106045596937

Jak w treści wpisać formatowanie wyświetlania wyniku (nawiasy klamrowe oraz przełącznik -f), by w mail-u bylo to samo co w konsoli?

P.S.
Nie wiem czemu ale potok " | Out-File" w tej wersji PS nie działa. A innej wersji nie mogę na tym serwerze instalować.
Nie masz pomysłu na prezent?
Zobacz na www.ilona.es
Kopalnia Prezentów Ilony.

#2 Kolega Dudysa

Kolega Dudysa

    Good Rank

  • Na emeryturze
  • 700 postów
  • Płeć:Mężczyzna

Napisano 13 08 2009 - 10:23

A jaką masz wersję PS że Out-File nie działa i w jakiej postaci to chcesz zapisac? Txt, html? Pozatym tak jak w cmd działa zapis: > C:\log.txt

To chyba nie jest cały skrypt? Używasz do tego klasy WMI? Czy .NET ? A może spróbować tak, tylko nie wiem czy txt czy html, zapisać, do skryptu dołączyć funkcję Send-Mapi, która korzysta z domyślnego klienta pocztowego:

#.EXAMPLE
# Get-ChildItem C:\temp\*.txt | Send-MAPI -To josheinstein@hotmail.com


PoshCode - Send-Mapi

Coś o formatowaniu:
klik
klik
klik
klik

#3 luck_skywalker

luck_skywalker

    First Rank

  • Użytkownicy
  • 7 postów
  • Płeć:Mężczyzna
  • Lokalizacja:Bukowno

Napisano 13 08 2009 - 13:17

A jaką masz wersję PS że Out-File nie działa i w jakiej postaci to chcesz zapisac? Txt, html? Pozatym tak jak w cmd działa zapis: > C:\log.txt

To jest chyba PS 1. Chcę to tylko wysłać w postaci maila. Bez zapisywania czegokolwiek. ma to być wywoływane z Harmonogramu Zadań. Więc musiałbym wtedy w sumie utworzyć chyba trzy skrypty: pierwszy - zbiera dane (właściwy), drugi wsadowy - który wywołuje skrypt poprzedni i kieruje go do pliku, trzeci - wysyła go mailem i kasuje ten plik tymczasowy.

To chyba nie jest cały skrypt? Używasz do tego klasy WMI? Czy .NET ? A może spróbować tak, tylko nie wiem czy txt czy html, zapisać, do skryptu dołączyć funkcję Send-Mapi, która korzysta z domyślnego klienta pocztowego:

Nie ma tam żadnego klienta pocztowego (typu Outlook itp.) poza obslugą SMTP. Jest to serwer bez powloki Exploratora (?). Nie wiem jak sie to fachowo nazywa - bez X-ów powiedziałbym.

Są to dwie takie same pętle (tutaj podaję jedną):
...
foreach($f_g in $g){
	if ($f_g.PsISContainer -ne $True)
		{
		$all_f_g = $f_g | % {$size_all_g=$size_all_g+$_.Length
		}
	   		$y = ((Get-Date) - $f_g.LastAccesTime).Days
		if ($y -gt $dni -and $f_g.PsISContainer -ne $True)
			{
			$f_g | % {$size_g=$size_g+$_.Length
			}
		}
	}
}

$emailFrom = "test@test.pl"
$emailPass = "test"
$emailTo = "nobody@nowhere.pl"
$subject = "Test powershell"
$body = 
"Nie używane przez ostatnie $dni dni"
"------------------------"
"$dir_g {0:#.00 GB} (bajtów: $size_g)" -f ($size_g/(1073741827))
"$dir_av {0:#.00 GB} (bajtów: $size_av)" -f ($size_av/(1073741827))

$smtpServer = "open-relay.com.pl"
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($emailFrom, $emailTo, $subject, $body)

To chyba WMI?
Samo formatowanie sie udaje, co pokazuje konsola.
Problemem jest natomiast przekazanie wyników do treści maila.Te nieszczęsne nawiasy klamrowe oraz opcja formatowania -f.
Jak się w tym przypadku łączy łańcuchy? Może w ten sposób to przekażę do zmiennej $body?

#.EXAMPLE
# Get-ChildItem C:\temp\*.txt | Send-MAPI -To josheinstein@hotmail.com

Sprawdzę. Lecz nie wiem jak to się ma do braku okienkowego klienta pocztowego, o którym wspominałeś. Choć tak jak mówiłem mam problem w tej wersji utworzyć plik, inaczej niż przez potok do pliku:
PS> .\skrypt.ps1 >> dane.txt
Tak działa.
Lecz jak to zrobić w harmonogramie? Zapisać a potem usunąć ten plik. Skryptów będzie znacznie więcej. Tworzenie plików, które z jakichś powodów nie zostaną usunięte (błąd w skrypcie itp), może spowodować zapelnienie dysku na serwerze, na który będę sporadycznie zaglądał. Mozna co prawda go nadpisywać, ale po co go wogóle tworzyć?
Nie masz pomysłu na prezent?
Zobacz na www.ilona.es
Kopalnia Prezentów Ilony.

#4 Kolega Dudysa

Kolega Dudysa

    Good Rank

  • Na emeryturze
  • 700 postów
  • Płeć:Mężczyzna

Napisano 13 08 2009 - 15:53

Jak się w tym przypadku łączy łańcuchy? Może w ten sposób to przekażę do zmiennej $body?


Tu jest inna sytuacja ponieważ funkcja ma za zadanie przesłać już stworzony plik. Dalej posiada tylko parametry do kogo, gdzie.


Co do wersjii konsoli by uzyskać jej wersję wystarczy wpisać: $host

Co do Get-Date to jest w .NET już przekonwertowana data normalnie w WMI odpowiada klasa CIM_DATETIME

musiałbym wtedy w sumie utworzyć chyba trzy skrypty: pierwszy - zbiera dane (właściwy), drugi wsadowy - który wywołuje skrypt poprzedni i kieruje go do pliku, trzeci - wysyła go mailem i kasuje ten plik tymczasowy.


Na początek dam Ci coś gotowego:

Sending E-mail From PowerShell v1.0
Sample for Sending Email with PowerShell (gotowiec do podstawienia dane)

Później zajmiemy się tym blisko, teraz jeszcze doprowadzam kilka rzeczy do porządku.

#5 luck_skywalker

luck_skywalker

    First Rank

  • Użytkownicy
  • 7 postów
  • Płeć:Mężczyzna
  • Lokalizacja:Bukowno

Napisano 13 08 2009 - 17:08

Jak się w tym przypadku łączy łańcuchy? Może w ten sposób to przekażę do zmiennej $body?


Tu jest inna sytuacja ponieważ funkcja ma za zadanie przesłać już stworzony plik. Dalej posiada tylko parametry do kogo, gdzie.

Niekoniecznie. Pokazałem przecież, że w ten sposób funkcja $smtp.Send wysyła mail-a wraz ze zmiennymi. Problemem jest tylko formatowanie tej zmiennej w "locie" (przycięcie liczby do odpowiedniej precyzji tj. dwóch znaków po przecinku)

Co do wersjii konsoli by uzyskać jej wersję wystarczy wpisać: $host

Co do wersji konsoli jest to na pewno powershell v 1.0 . Sprawdziłem j/w.

Co do Get-Date to jest w .NET już przekonwertowana data normalnie w WMI odpowiada klasa CIM_DATETIME

Tak zgadza się, tylko w jaki sposób operować tą datą? Jaka metoda umożliwi nieskomplikowanie wyznaczenie pliku nie odczytywanego od x dni, tak jak to zrobiłem w tym skrypcie. W Powershellu wystarczy odjąć od siebie funkcje .Days metod Get-Date oraz LastAccesTime i wynik mamy gotowy.

Na początek dam Ci coś gotowego:

Sending E-mail From PowerShell v1.0
Sample for Sending Email with PowerShell (gotowiec do podstawienia dane).
Później zajmiemy się tym blisko, teraz jeszcze doprowadzam kilka rzeczy do porządku.

Widziałem mnóstwo podobnych. Nie wiem czy zauważyłeś, ale w każdym zmienna $body to jest coś takiego
$body = ""
U mnie występuje to tak samo. Jedyna różnica to problem z generowaniem pliku (bo trzeba go wywołać np. z pliku BAT co pod znakiem zapytania stawia zastosowanie PS) lub dołączeniem formatowania do zmiennej w pamięci, przygotowanej do wysłania. Sprawa załącznika nie zmieni faktu, że trzeba taki plik wygenerować.
Formatowanie w trybie tabel itp. to tylko inny sposób wyświetlenia. Problemem najistotniejszym jest tu zaokrąglenie liczby lub ilorazu liczb, do określonego miejsca po przecinku np {0:#.00}. Jak sprawić, by w string utworzony z tym ciągiem potraktował go jako funkcję formatującą a nie zwykły ciąg znaków?
Tabele, XML oraz HTML nie działają w PS 1.0. Oglądałem to tylko w PS2.0 u siebie w domu. Kod stworzony pod PS 2.0 jest nieprzenośny do wersji 1.0 . O czym, sam się przekonałem.
Sam skrypt wysyła maile wyśmienicie, choć to mój pierwszy w PowerShell. Nie trułbym na forum, gdyby nie potrzeba. Od poniedziałku muszę wysyłać raporty co do zajętości różnych katalogów ftp. Ma to być co tydzień. By odciążyć pamięć, zrobiłem skrypty oraz wpisy w Harmonogramie. Niestety skrypty wysyłają pocztę nie tak jak bym chciał. A pamięć czasami bywa zawodna.

P.S.
Wrócę do tematu w poniedziałek. Bo dostęp do tego serwera mam tylko z wewnątrz. Może coś do tego czasu wymyślę.
Nie masz pomysłu na prezent?
Zobacz na www.ilona.es
Kopalnia Prezentów Ilony.

#6 Kolega Dudysa

Kolega Dudysa

    Good Rank

  • Na emeryturze
  • 700 postów
  • Płeć:Mężczyzna

Napisano 13 08 2009 - 21:49

Ja Ciebie rozumiem i to że nie chcesz pokazać całego skryptu, zmienne które pokazujesz nie wiele mi mówią, a tylko dlatego że ja lubie obejrzeć całą zawartość tego co widzę. $body możesz sformuowac tak:

$body = "Get-WmiObject WIN32_Process  | format-table * "
$body

$dir0 jakie przyjmują własności? i ta druga?

#7 luck_skywalker

luck_skywalker

    First Rank

  • Użytkownicy
  • 7 postów
  • Płeć:Mężczyzna
  • Lokalizacja:Bukowno

Napisano 14 08 2009 - 21:40

Ja Ciebie rozumiem i to że nie chcesz pokazać całego skryptu, zmienne które pokazujesz nie wiele mi mówią, a tylko dlatego że ja lubie obejrzeć całą zawartość tego co widzę.

Nie to, że nie chcę. Są wg mnie mało istotne. $dir0 pojawiło się tylko w testach, właściwe to $dir_g. Po prostu są to zmienne określające katalog ($dir_g) oraz listę plików ($f_g) wpisanych rekursywnie do zmiennej poprzez Get-ChildItem (alias DIR). $size_g i $size_all_g określają kolejno wielkość pliku graficznego oraz wielkość wszystkich plików w danym katalogu (tutaj to tylko grafika). Zmienną $size_all_g możemy również wykorzystać (dopisałem to przykładowo poniżej jako "Wszystkie pliki").
...
$dir_g = "C:\path\to\graphics\files" # Sciezka do katalogu z grafika
$f_g = Get-ChildItem $dir_g -recurse  # Lista plikow graficznych
$size_g = 0
$size_all_g = 0
...
I potem przetwarzane w pętli jak podałem. Wynik wyświetlony w konsoli, to ta część zaraz za pętlą:
"Nie używane przez ostatnie $dni dni"
"------------------------"
"$dir_g {0:#.00 GB} (bajtów: $size_g)" -f ($size_g/(1073741827))
"Wszystkie pliki"
"------------------------"
"$dir_g {0:#.00 GB} (bajtów: $size__all_g)" -f ($size__all_g/(1073741827))
Ta druga wartość (wcześniej $dir1, podana później jako $dir_av) to wynik innej pętli tj. na innej zmiennej. Po prostu sprawdzana jest w niej inna ścieżka. Mozna było to oczywiście zrobić w jednej pętli, lecz za bardzo by to zagmatwało sprawę. Dla testów formatowania, można przecież podstawić dwukrotnie tą samą zmienną.

$body = "Get-WmiObject WIN32_Process  | format-table * "
$body

Po pierwsze jak już pisałem tabela nie chce działać pod PS 1.0, tak jak Log-Flle, Out-File i wiele innych. Poza tym docelowo chcę to wysłać właśnie w ten sposób:
C:\Windows\   28,60 GB (bajtów: 30708227364)
C:\Program Files\ 195,11 GB (bajtów: 209493521858)
Sposób wyświetlenia nie zmieni problemu z zaokrąglaniem liczby z precyzją.
Bo kto chce oglądać wielkość katalogu np. w ten sposób:
C:\Windows\   28,5992653 GB (bajtów: 30708227364)
Jest to mało czytelne i niezbyt eleganckie. Szczególnie przy dużej ilości danych. W gąszczu cyfr trzeba znaleźć przecież przecinek.

Tak jak pisałem: wrócę do tego dopiero w poniedziałek. Jeśli coś wymyślę z rana: to dam znać, jak to rozwiązałem.
Na codzień posługuję się Pingwinem, więc nie mam nawet tego jak sprawdzić. A skrypt, to niestety wymóg pracy admina. Skrypty pisałem kiedyś pod DOS. Nie wiedziałem do zeszłego tygodnia, że jest coś takiego jak PowerShell. Uratował mi życie :blink: Bo o ile plikiem wsadowym można wylistować rekursywnie pliki w katalogu, to już sztuczek z datą utworzenia (modyfikacji) nie bardzo. No i to wysłanie pocztą.

Aha i oczywiście zapodam cały skrypt !!! Teraz mogłem zrobić to z błędami - pisałem z pamięci.

Pozdrawiam.
Nie masz pomysłu na prezent?
Zobacz na www.ilona.es
Kopalnia Prezentów Ilony.

#8 Kolega Dudysa

Kolega Dudysa

    Good Rank

  • Na emeryturze
  • 700 postów
  • Płeć:Mężczyzna

Napisano 15 08 2009 - 11:43

Po pierwsze jak już pisałem tabela nie chce działać pod PS 1.0, tak jak Log-Flle, Out-File i wiele innych


Jak masz ustawioną politykę uruchaminia skryptów? Tak mi się coś w głowie kołacze. Ustawiałeś ją? Jesli nic nie robiłeś to jest automatyczna restrykcja uruchamiania skryptów, tylko nie wiem czy może mieć to związek w 1.0 co do uruchamiania innych poleceń, nie powinno mieć. Wklep:
Get-ExecutionPolicy
Jak będzie restricted to zmień na dostęp nieograniczony:
Set-ExecutionPolicy Unrestricted

Log-File nie widziałem nigdy takiego polecenia. A uruchom sobie jakiś skrypt z zewnątrz i wklep:
C:\JakiśSkrypt.ps1 | Out-File -FilePath C:\Log.txt
lub na przykładzie zwykłego Get-Process

Czy konsola wyświetla jakiś błąd? Podczas tych niedziałających poleceń? Zobacz czy w podglądzie zdarzeń w zakładce Windows PowerShell są jakies błędy i te żółte również, może to problem z platformą .NET.

#9 luck_skywalker

luck_skywalker

    First Rank

  • Użytkownicy
  • 7 postów
  • Płeć:Mężczyzna
  • Lokalizacja:Bukowno

Napisano 16 08 2009 - 20:51

Po pierwsze jak już pisałem tabela nie chce działać pod PS 1.0, tak jak Log-Flle, Out-File i wiele innych


Jak masz ustawioną politykę uruchaminia skryptów? Tak mi się coś w głowie kołacze. Ustawiałeś ją? Jesli nic nie robiłeś to jest automatyczna restrykcja uruchamiania skryptów, tylko nie wiem czy może mieć to związek w 1.0 co do uruchamiania innych poleceń, nie powinno mieć. Wklep:
Get-ExecutionPolicy
Jak będzie restricted to zmień na dostęp nieograniczony:
Set-ExecutionPolicy Unrestricted


Pierwsze co zrobiłem to zmieniłem politykę. Domyślnie było ustawienie uniemożliwiające wykonywanie skryptów Powershell'a.

Co do Log-File - może coś pomieszałem.
Jak już pisałem, cytuję wszystko z pamięci. Więc się mogłem machnąć. A biegły w PS nie jestem.

Resztę sprawdzę jutro rano.
Nie masz pomysłu na prezent?
Zobacz na www.ilona.es
Kopalnia Prezentów Ilony.

#10 luck_skywalker

luck_skywalker

    First Rank

  • Użytkownicy
  • 7 postów
  • Płeć:Mężczyzna
  • Lokalizacja:Bukowno

Napisano 17 08 2009 - 08:31

Zgodnie z obietnicą publikuję działający skrypt:

# g,av   - lista podkatalogow do wyszukiwania,
# f_g,f_av - pliki, 
# dir_g,dir_av - katalogi z plikami np. 'C:\Windows'
# dni - jak dlugo nie modyfikowane (istnieja) pliki
# size_all_g, size_all_av - wielkosc wszystkich plikow w katalogach
# y - zmienna pomocnicza (roznica dni liczona w petli)
 
# f_g.CreationTime, f_av.CreationTime <-- Czas utworzenia
# f_g.LastAccessTime, f_g.LastAccessTime <-- Czas ostatniej modyfikacji

$dir_g = '\Path\to\graphics\files\'
$dir_av =  '\Path\to\video\files\'

$g = Get-ChildItem -recurse $dir_g
$av = Get-ChildItem -recurse $dir_av

$size_g = 0
$size_av = 0
$size_all_g= 0
$size_all_av= 0
$dni = 30

foreach($f_g in $g){
	if ($f_g.PsISContainer -ne $True)
	{
		$all_f_g = $f_g | % {$size_all_g=$size_all_g+$_.Length}
		$y = ((Get-Date) - $f_g.LastAccessTime).Days	   #$y = ((Get-Date) - $f_g.CreationTime).Days
		if ($y -gt $dni -and $f_g.PsISContainer -ne $True)
		{
			$f_g | % {$size_g=$size_g+$_.Length} #{$f_g.Delete()}			
		}
	}
}

foreach($f_av in $av){
			 if ($f_av.PsISContainer -ne $True)
	{
		$all_f_av = $f_av | % {$size_all_av=$size_all_av+$_.Length}
		$y = ((Get-Date) - $f_av.LastAccessTime).Days	 # $y = ((Get-Date) - $f_av.CreationTime).Days
		if ($y -gt $dni -and $f_av.PsISContainer -ne $True)
		{
			$f_av | % {$size_av=$size_av+$_.Length}  #{$f_av.Delete()}
		}
	}
}

#Wyswietla na konsoli

"Nie używane przez ostatnie $dni dni"
"------------------------"
"$dir_g  $([math]::round($size_g/(1073741827))) GB (bajtów: $size_g)"
"$dir_av $([math]::round($size_av/(1073741827))) GB (bajtów: $size_av)"


"Wszystkie pliki na serwerze FTP" 
"------------------------"
"$dir_g  $([math]::round($size_all_g/(1073741827))) GB (bajtów: $size_all_g)"
"$dir_av $([math]::round($size_all_av/(1073741827))) GB (bajtów: $size_all_av)"


# Wysyla na e-mail

$emailFrom = "nobody@nowhere.com"
$emailTo = "destination@nowhere.com"
$subject = "Informacja o zajętości plików w określonych katalogach"

$body = "

Pliki nie używane przez ostatnie $dni dni
------------------------
$dir_g  $([math]::round($size_g/(1073741827))) GB (bajtów: $size_g)
$dir_av $([math]::round($size_av/(1073741827))) GB (bajtów: $size_av)


Wszystkie pliki na serwerze FTP 
------------------------
$dir_g  $([math]::round($size_all_g/(1073741827))) GB (bajtów: $size_all_g)
$dir_av $([math]::round($size_all_av/(1073741827))) GB (bajtów: $size_all_av)

Wiadomość wygenerowana automatycznie.

"

$smtpServer = "mail.server.com"
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($emailFrom, $emailTo, $subject, $body)

# System.Net.Mail.Attachment  <-- zalacznik

Problem z formatowaniem obszedlem poprzez zastosowanie funkcji
[math]::(round $divide, $precision)
Co ciekawe w
$host

Name			 : ConsoleHost
Version		  : 1.0.0.0
nie działa niestety jedna z ważniejszych funkcji Round - ustalanie ilości liczb po przecinku :blink:

By usuwać pliki przy wyszukiwaniu należy w miejsce zliczania (tutaj pierwsza pętla dla plików f_g):
...
$f_g | % {$size_g=$size_g+$_.Length }
...
wstawić takie coś:
{$f_g.Delete()}
Ale to już zależy od Was. Ja bym jednak był ostrożny.
Wynikiem jest e-mail o treści:

Pliki nie używane przez ostatnie 30 dni
------------------------
\Path\to\graphics\files\ 7 GB (bajtów: 7816527185)
\Path\to\video\files\ 27 GB (bajtów: 28615721021)


Wszystkie pliki na serwerze FTP
------------------------
\Path\to\graphics\files\  30 GB (bajtów: 32217758774)
\Path\to\video\files\ 218 GB (bajtów: 234225053398)

Wiadomość wygenerowana automatycznie.

Pozdrawiam.
Nie masz pomysłu na prezent?
Zobacz na www.ilona.es
Kopalnia Prezentów Ilony.

#11 Kolega Dudysa

Kolega Dudysa

    Good Rank

  • Na emeryturze
  • 700 postów
  • Płeć:Mężczyzna

Napisano 17 08 2009 - 09:43

Hej, nieno spoko skoro już zrobiłeś to już nie musiałeś pokazać całego skryptu :blink:

nie działa niestety jedna z ważniejszych funkcji Round - ustalanie ilości liczb po przecinku


W PS 1.0 raczej tego nie ma.

Ale co do formatowania zajrzyj tu String Formatting: klik, klik, klik, klik

#12 luck_skywalker

luck_skywalker

    First Rank

  • Użytkownicy
  • 7 postów
  • Płeć:Mężczyzna
  • Lokalizacja:Bukowno

Napisano 17 08 2009 - 11:27

Ale co do formatowania zajrzyj tu String Formatting: klik, klik, klik, klik


Zwroc jednak uwage, ze w poprzedniej wersji skryptu mialem takie formatowanie:
$dir_g {0:#.00 GB} (bajtów: $size_g)" -f ($size_g/(1073741827))
Co jest tylko jednym z wariantow, ktore mi zaproponowales. Problemem glownym byly nawiasy klamrowe oraz przelacznik formatowania "-f" . Nie poradizlem sobie z wstawianiem tego do stringu. Kulawym obejsciem problemu bylo zastosowanie round(). Choc przez braki PS 1.0 wynik rozni sie od zakladanego (tego z konsoli). Ale najwazniejsze, ze dziala.

Dzieki za zainteresowanie.

P.S.
Sorry za brak polskich znakow, ale lokalizuje wlasnie nowa Opere.
Nie masz pomysłu na prezent?
Zobacz na www.ilona.es
Kopalnia Prezentów Ilony.




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych