-
@chv אמר בעזרה - שינוי שם בקבצי PDF מרובים לפי טקסט מתוך המסמך:
ברור, זה מיועד להריץ פעם אחת בלבד. כי הוא פשוט סורק את הקבצים הקיימים בתקייה (מקווה שכתבתי ברור).
לא ממש הבנתי למה הוא נותן מספור גם לקבצים שאינם כפולים. (וכמו שכתבתי, זה קורה בשלב ב', קודם הוא משנה את השם לכולם, ואח"כ מוסיף מספרים.
יש לך גיבוי לכל מה שאתה עושה, ברור?
בוודאי
-
param([string]$path = '.') $pdftotext = "C:\path\to\PdfToText.exe" [Console]::OutputEncoding = [text.encoding]::utf8 Get-ChildItem -path $path -Filter '*.pdf' | ForEach-Object -Process { if ($_.BaseName -cmatch '^[A-Z0-9]{10}$') { # Check filename matches format $donor = &$pdftotext -enc UTF-8 -simple $_.FullName - | Select-Object -Index 9 # Get donor line $donor = $donor -replace "[$([Regex]::Escape(-join [IO.Path]::GetInvalidFileNameChars()))]", '_' # Replace illegal characters $donor = $donor -replace "[\u202b\u202c]", "" # Strip bidi chars $donor = (($donor -split ' ' | Select-Object -Unique) -join ' ').Trim() # Remove double name $date = &$pdftotext -enc UTF-8 -simple $_.FullName - | Select-Object -Index 4 # Get date line $date = $date -replace '^[^0-9\/]*([0-9/]+)[^0-9/]*$', '$1' # Get date $date = $date -replace "[\u202b\u202c]", "" # Strip bidi chars $date = $date -replace '/', '_' $filename = '{0}_({1}_{2}).pdf' -f $_.BaseName, $donor, $date $_ | Rename-Item -NewName $filename } }
עדכן אותנו אם עדיין יש שגיאות.
הסקריפט פועל רק על קבצים שהשם שלהם מתאים לפורמט של "10 אותיות גדולות או מספרים".
מימשתי את הצעותיו המעולות של @OdedDvirלשנות את שם הקובץ המקורי ל: שם המקורי+שם התורם.
לבדוק אם שם הקובץ גדול מ-10 תווים (ואז הוא טופל)
ממיר את כל התווים הלא תקניים לקו תחתון (מקור)
ולמדתי קצת powershell על הדרך.
-
@yossiz אמר בעזרה - שינוי שם בקבצי PDF מרובים לפי טקסט מתוך המסמך:
param([string]$path = '.') $pdftotext = "C:\path\to\PdfToText.exe" [Console]::OutputEncoding = [text.encoding]::utf8 Get-ChildItem -path $path -Filter '*.pdf' | ForEach-Object -Process { if ($_.BaseName -cmatch '^[A-Z0-9]{10}$') { # Check filename matches format $donor = &$pdftotext -enc UTF-8 -simple $_.FullName - | Select-Object -Index 9 # Get donor line $donor = $donor -replace "[$([Regex]::Escape(-join [IO.Path]::GetInvalidFileNameChars()))]", '_' # Replace illegal characters $donor = $donor -replace "[\u202b\u202c]", "" # Strip bidi chars $donor = (($donor -split ' ' | Select-Object -Unique) -join ' ').Trim() # Remove double name $date = &$pdftotext -enc UTF-8 -simple $_.FullName - | Select-Object -Index 4 # Get date line $date = $date -replace '^[^0-9\/]*([0-9/]+)[^0-9/]*$', '$1' # Get date $date = $date -replace "[\u202b\u202c]", "" # Strip bidi chars $date = $date -replace '/', '_' $filename = '{0}_({1}_{2}).pdf' -f $_.BaseName, $donor, $date $_ | Rename-Item -NewName $filename } }
עדכן אותנו אם עדיין יש שגיאות.
הסקריפט פועל רק על קבצים שהשם שלהם מתאים לפורמט של "10 אותיות גדולות או מספרים".
מימשתי את הצעותיו המעולות של @OdedDvirלשנות את שם הקובץ המקורי ל: שם המקורי+שם התורם.
לבדוק אם שם הקובץ גדול מ-10 תווים (ואז הוא טופל)
ממיר את כל התווים הלא תקניים לקו תחתון (מקור)
ולמדתי קצת powershell על הדרך.
נהדר! פצצה!
גם השארת השם המקורי חשובה מצד עצמה.
יישר כח גדול מאוד. לא ראיתי באופק דרך להתמודד עם 1424 קבלות. זה פשוט ישועה.ולמדתי הרבה על מידות טובות ונתינה על הדרך.
-