PowerShell script για μαζική αντικατάσταση λέξεων σε κείμενο

PowerShell script για μαζική επεξεργασία κειμένου: Οι επεξεργαστές κειμένου όπως το Notepad και το Notepad ++ χρησιμοποιούνται για τη δημιουργία πολλών διαφορετικών τύπων αρχείων όπως αρχεία καταγραφής, , αρχεία PowerShell και πολλά άλλα. PowerShell

Εφόσον ο επεξεργαστής κειμένου που χρησιμοποιείτε μπορεί να δημιουργήσει αυτά τα αρχεία, μπορεί και να τα επεξεργαστεί. Αν έχετε όμως πολλά αρχεία κειμένου και πρέπει να αντικαταστήσετε μια μερικές λέξεις σε όλα, τότε μπορείτε να το κάνετε με ένα PοwerShell script.

Το script θα το κάνει, χωρίς να χρειάζεται να ανοίξετε κάθε αρχείο ξεχωριστά για να αντικαταστήσετε τη λέξη. Ας δούμε πως μπορείτε να το κάνετε.

Μπορείτε να χρησιμοποιήσετε το ίδιο script σχεδόν για άλλους τους τύπους αρχείων που μπορούν να δημιουργηθούν με ένα πρόγραμμα επεξεργασίας κειμένου.

Αρχικά θα πρέπει να τοποθετήσετε όλα τα αρχεία κειμένου που θέλετε να επεξεργαστείτε στον ίδιο φάκελο. Το script θα ελέγξει μόνο έναν φάκελο και όχι ολόκληρο το σύστημά σας.

Πολλές φορές μέσα από αυτή τη σελίδα έχουμε αναφέρει την δωρεάν εφαρμογή επεξεργασίας κειμένου Notepad++. Μπορείτε να κατεβάσετε και να χρησιμοποιήσετε την εφαρμογή. Δημιουργήστε ένα νέο αρχείο, αντιγράψτε και επικολλήστε το παρακάτω κείμενο:

Get-ChildItem 'διαδρομή-φακέλου\*.txt' -Recurse | ForEach {
(Get-Content $_ | ForEach { $_ -replace 'αρχική-λέξη', 'νέα-λέξη' }) |
Set-Content $_
}

Θα πρέπει να επεξεργαστείτε το παραπάνω script. Αλλάξτε το “διαδρομή-φακέλου” με την πραγματική διαδρομή προς το φάκελο που περιέχει τα αρχεία κειμένου που συγκεντρώσατε για να επεξεργαστείτε.

  Polyfoto : Δωρεάν εργαλείο για την δημιουργία ψηφιδωτών εικόνων

Μετά θα πρέπει να αντικαταστήστε το ‘αρχική-λέξη’ με τη λέξη που θέλετε να αντικαταστήσετε. Τέλος, αλλάξτε το “νέα-λέξη” και προσθέστε τη λέξη που θέλετε να αντικαταστήσει την παλιά.

Για παράδειγμα, έχω μερικά αρχεία κειμένου που έχουν τη λέξη ‘Δημοσίευση’ και θέλω να αντικαταστήσω τη λέξη δημοσίευση με τη λέξη άρθρο. Δείτε πως μετέτρεψα το παραπάνω script:

 Get-ChildItem 'C:\Users\iguru\Desktop\files\*.txt' -Recurse | ForEach {
(Get-Content $_ | ForEach { $_ -replace 'δημοσίευση', 'άρθρο' }) |
Set-Content $_
}

Μόλις τελειώσετε με την μετατροπή αποθηκεύστε το κείμενό σας με την επέκταση αρχείου ps1. Στην εφαρμογή Notepad++ πριν την αποθήκευση βεβαιωθείτε ότι έχετε αλλάξει τον τύπο αρχείου. Τρέξτε το script και τα αρχεία σας θα αλλάξουν.

Εάν θέλετε να χρησιμοποιήσετε το ίδιο script για άλλα αρχεία εκτός των αρχείων .txt, αλλάξτε την επέκταση αρχείου στην πρώτη γραμμή. Για παράδειγμα,

το C:\Users\\Desktop\files\*.txt
θα πρέπει να γίνει
C:\Users\iguru\Desktop\files\*.xml

Προειδοποίηση: Το script δεν αναγνωρίζει τις λέξεις. Αν θέλετε να αντικαταστήσετε τη λέξη the με το a, αντικαταστήσει το ‘the’ όπου το βρει. Ας πούμε στην αρχή της λέξης .

_____________________________________________

Written by giorgos

Ο Γιώργος ακόμα αναρωτιέται τι κάνει εδώ....

4 Comments

Leave a Reply
  1. Δεν ξέρω αν έστειλα το προηγούμενο, οπότε επαναλαμβάνω συνοπτικά.
    Τι γίνεται αν αντί αντικατάστασης λέξης με άλλη λέξη, θέλω να αντικαταστήσω λέξη με μια μεταβλητή (το όνομα του αρχείου π.χ)
    Θα σας είμαι ευγνώμων για μια απάντηση

    • μπορείς να δώσεις μεταβλητές (variables) π.χ.:
      $extension = “*.cue”
      $filename = “το όνομα του αρχείου”

      δες εδώ μήπως πάρεις καμιά ιδέα

  2. Με βοηθήσατε πάρα πολύ. Αν όμως αντί για συγκεκριμένη λέξη θέλω να βάλω μια μεταβλητή? Να αντικαταστήσω δλδ μια συγκεκριμένη λέξη με μια μεταβλητή (το όνομα του αρχείου). Όπως ήδη έχετε καταλάβει πρόκειται για αρχεία .cue. Βρήκα 200 φακέλους με διαφορετικό όνομα, που ο καθένας είχε 2 αρχεία όλα όμοια μεταξύ τους, οπότε δεν μπορώ να μεταφέρω flac και cue στον ίδιο φάκελο της συλλογής μου. Μετέτρεψα τα αρχεία κάθε φακέλου με το όνομα του φακέλου αλλά δεν γλύτωσα. Τώρα πρέπει σε κάθε cue εσωτερικά στη γραμμή File να βάλω το όνομα του αντίστοιχου αρχείου flac. Πρέπει δλδ να ανοίξω ένα-ένα 200 cue.
    Help (sarastrogr@gmail.com)

Αφήστε μια απάντηση

Η ηλ. διεύθυνση σας δεν δημοσιεύεται. Τα υποχρεωτικά πεδία σημειώνονται με *

Το μήνυμα σας δεν θα δημοσιευτεί εάν:
1. Περιέχει υβριστικά, συκοφαντικά, ρατσιστικά, προσβλητικά ή ανάρμοστα σχόλια.
2. Προκαλεί βλάβη σε ανηλίκους.
3. Παρενοχλεί την ιδιωτική ζωή και τα ατομικά και κοινωνικά δικαιώματα άλλων χρηστών.
4. Διαφημίζει προϊόντα ή υπηρεσίες ή διαδικτυακούς τόπους .
5. Περιέχει προσωπικές πληροφορίες (διεύθυνση, τηλέφωνο κλπ).


  +  13  =  22