עזרה בהורדה ב PowerShell
-
@yits אמר בעזרה בהורדה ב PowerShell:
אגב המשתנה page הוא מספר רץ אצלי, ואם אני ישתמש איתו גם למה שכתבת כנראה זה לא יעבוד.
נכון, לא שמתי לב שאתה כבר משתמש במשתנה בשם
$page
. תן לו שם אחר.במיקום של השמירה אני משתמש בכמה משתנים וניסיתי לעשות עם פס תחתון והוא זיהה רק את המשתנה השני, ולכן השתמשתי עם רווח.
-OutFile "$saveFolder$book$book_$page.webp"
איך אפשר להשתמש בשניהם יחד?
זה קורה מסיבה מובנת, כי כאשר powershell נתקל בתו הדולר
$
באמצע מחרוזת הוא מתייחס לכל הבא אחריו כחלק משם המשתנה, עד שהוא מגיע לתו שהוא לא חוקי באמצע משתנה. מכיון שתו_
הוא תו חוקי במשתנה, powershell לא יכול לדעת שהוא לא חלק משם המשתנה.
יש כמה פתרונות, מתוכם-OutFile "$saveFolder\$book\$($book)_$page.webp" -OutFile ("$saveFolder\$book\$book" + "_$page.webp")
-
@dovid
הפתרון שהבאת לא עובד,
הוא יודע לומר אם הגודל הוא 0 או לא,
אבל לא ניתן לייצא אותו אח"כ לקובץ.זה מה שניסיתי
$saveFolder = ($pwd).path $book = 602285 $page = 0 md 602285 $url = "http://mefo.otzar.org/api/books/$book/$page/image" $Responsepage = Invoke-WebRequest $url if ($Responsepage.RawContentLength -ne 0) {Out-File -FilePath "$saveFolder\$book\$book $page.webp" -InputObject $Responsepage.RawContent} else {break }
-
@yits "אבל לא ניתן לייצא אותו אח"כ לקובץ"
קורה משהו? מנין לך שהבדיקה עובדת?
אגב אני כעת רואה שRawContentLength מחזיר את הגודל של התוכן + הכותרות וממילא זה לא הכי מתאים.
כמו"כ הRawContent מכיל כותרות יש לשנות אותו לContet.
כל זה בלי קשר לבעיה שאתה אומר שזה לא עובד.. -
@yossiz אמר בעזרה בהורדה ב PowerShell:
@yits אמר בעזרה בהורדה ב PowerShell:
אבל במקרה שיש תוכן אני לא מצליח לשמור את הנתונים.
אבל אתה לא מתאר איך ה"לא מצליח" הזה מתממש? יש שגיאה? הקובץ נוצר ריק? הקובץ לא נוצר?
נוצר קובץ לא תקין.
-
הממ.. זה בעייתי...
https://stackoverflow.com/questions/24708859 -
@yits זה נראה קצת בעייתי להעביר את המידע של
Invoke-WebRequest
אם זה מידע בינארי כי זה מומר ל-string,
נראה לי שהכי קל להשתמש בקוד שלי ולכתוב תנאי אחרי ההורדה שאם ה-contentLength הוא 0 למחוק את הקובץ ולהפסיק את הלולאה.
משהו כזה:$ResponsePage = Invoke-WebRequest $url -OutFile "$saveFolder\$book\$book $page.webp" -passThru if ($Responsepage.RawContentLength -eq 0) { rm "$saveFolder\$book\$book $page.webp" break }
-
מה זה הסיפור הזה שלח תשובה ריקה? זה לא הכי נורמלי.
זה מחזיר OK כלומר 200? יש מצב לכתובת דוגמה כזו?כשהכרתי את PowerShell אז התלהבתי שאוכל לעשות בקלות קודים לפעולות קטנות במחשב כיוצא באלו,
אבל איבדתי את ההתלהבות ברגע שגיליתי את LinqPad שמאפשר להריץ בקלות C#.
השפה והשימוש בסקריפטים של powershell או בש (וק"ו batch) ממש קשים לי. -
@dovid אמר בעזרה בהורדה ב PowerShell:
מה זה הסיפור הזה שלח תשובה ריקה? זה לא הכי נורמלי.
זה מחזיר OK כלומר 200? יש מצב לכתובת דוגמה כזו?(אני עונה במקום @yits כי אני יודע באיזה אתר מדובר)
כן, זה מחזיר 200... זה באמת לא הכי נורמלי, אבל מה לעשות... ¯/_(ツ)_\¯