Ich habe ein Verzeichnis von Dateien, die ich Dateierweiterung anfügen möchten, solange sie keine vorhandene, angegebene Erweiterung haben. Fügen Sie daher .txt allen Dateinamen hinzu, die nicht in .xyz enden. PowerShell scheint dafür ein guter Kandidat zu sein, aber ich weiß nichts darüber. Wie würde ich darüber gehen?Verwenden von PowerShell zum Hinzufügen einer Erweiterung zu Dateien
14
A
Antwort
16
+1 zu EBGreen, außer dass (zumindest auf XP) der "-exclude" -Parameter zu get-childitem nicht zu funktionieren scheint. Der Hilfetext (gci -?) Sagt eigentlich "dieser Parameter funktioniert nicht richtig in diesem Cmdlet"!
So können Sie filtern manuell wie folgt aus:
gci
| ?{ !$_.PSIsContainer -and !$_.Name.EndsWith(".xyz") }
| %{ ren -new ($_.Name + ".txt") }
3
Betrachten Sie den DOS-Befehl FOR in einer Standard-Shell.
C:\Documents and Settings\Kenny>help for
Runs a specified command for each file in a set of files.
FOR %variable IN (set) DO command [command-parameters]
%variable Specifies a single letter replaceable parameter.
(set) Specifies a set of one or more files. Wildcards may be used.
command Specifies the command to carry out for each file.
command-parameters
Specifies parameters or switches for the specified command.
...
In addition, substitution of FOR variable references has been enhanced.
You can now use the following optional syntax:
%~I - expands %I removing any surrounding quotes (")
%~fI - expands %I to a fully qualified path name
%~dI - expands %I to a drive letter only
%~pI - expands %I to a path only
%~nI - expands %I to a file name only
%~xI - expands %I to a file extension only
%~sI - expanded path contains short names only
%~aI - expands %I to file attributes of file
%~tI - expands %I to date/time of file
%~zI - expands %I to size of file
%~$PATH:I - searches the directories listed in the PATH
environment variable and expands %I to the
fully qualified name of the first one found.
If the environment variable name is not
defined or the file is not found by the
search, then this modifier expands to the
empty string
18
Hier ist der Weg, Powershell:
gci -ex "*.xyz" | ?{!$_.PsIsContainer} | ren -new {$_.name + ".txt"}
Oder es etwas ausführlicher und leichter zu verstehen:
Get-ChildItem -exclude "*.xyz"
| WHere-Object{!$_.PsIsContainer}
| Rename-Item -newname {$_.name + ".txt"}
EDIT: Es gibt natürlich nichts falsch mit der DOS-Weg entweder. :)
EDIT2: Powershell unterstützt implizite (und explizit für diese Angelegenheit) Zeilenfortsetzung und wie Matt Hamiltons Beitrag zeigt, macht es Dinge leichter zu lesen.
1
fanden diese Informationen hilfreich, während Powershell v4 verwenden.
Get-ChildItem -Path "C:\temp" -Filter "*.config" -File |
Rename-Item -NewName { $PSItem.Name + ".disabled" }
Verwandte Themen
- 1. Verwenden von PowerShell zum Auflisten Objekt Beschreibung
- 2. Wie zu einer Pipeline in Powershell hinzufügen?
- 3. Verwenden Sie PowerShell zum Kopieren von Dateien von Arbeitsstation zu Server unter Beibehaltung der Verzeichnisstruktur
- 4. Verwenden von Strg-M zum Ausführen eines PowerShell-Skripts zum Kopieren von Dateien aus anderen Vergleichen
- 5. Powershell-Skript zum Suchen und Ersetzen für alle Dateien mit einer bestimmten Erweiterung
- 6. Hinzufügen von Kontextmenüelementen zu einer Browser-Aktionsschaltfläche einer Chrome-Erweiterung
- 7. Screenshot-Funktionalität zu einer Firefox-Erweiterung hinzufügen
- 8. Hinzufügen von NaCl in einer Chrome-Erweiterung
- 9. Verwenden von Python zum Hinzufügen einer Liste zu einer Position in einer CSV-Datei
- 10. Verwenden von rubyzip zum Hinzufügen von Dateien und verschachtelten Verzeichnissen zu einem zipoutputstream
- 11. Hinzufügen von Objekten zu Sicherheitsgruppe (PowerShell)
- 12. Verwenden von Matlab zum Hinzufügen von Kontakten zu Outlook
- 13. Verwenden von Python zum Hinzufügen einer Liste von Dateien in eine Zip-Datei
- 14. PowerShell zum Festlegen von GPO
- 15. Wie Powershell zum Kopieren von Datei und Original-Zeitstempel verwenden
- 16. Erweiterung zu URL hinzufügen: Rails
- 17. Verwenden von JScript in Powershell
- 18. Verwenden von PowerShell und TFS.exe zum Aktualisieren und Löschen von Dateien aus Projekten
- 19. Powershell-Funktion zum Ersetzen oder Hinzufügen von Zeilen in Textdateien
- 20. Verwenden von Keypress zum Hinzufügen von Element zu Listbox
- 21. Hinzufügen von Rechtsklick-Option zum Symbol der Chrome-Erweiterung
- 22. PowerShell - Hinzufügen von Zähler zu While-Schleife
- 23. Auflisten von DLL-Dateien mit Powershell?
- 24. Wie kann ich Dateien mit einer bestimmten Erweiterung automatisch zu einem Commit hinzufügen?
- 25. Powershell Script zum Zählen von Zeichen
- 26. Lokale Dateien zu Projekten Hinzufügen von Dateien
- 27. IIS verwenden, um Dateien im Klartext ohne Erweiterung zu dienen
- 28. Hinzufügen von Daten zu Dateien
- 29. Ember-Addon zum Hinzufügen von Dateien zum Root-Verzeichnis
- 30. Weird String-Erweiterung mit Powershell
Ich bin auf XP und ich lief das genau so, wie es kein Problem ist. – EBGreen
Ich gebe zu, dass das -exclude nicht wie erwartet funktioniert, wenn Sie es mit dem -recurse-Flag kombinieren. In diesem Fall müssen Sie einen expliziten Startpfad angeben. Lass mich sicher gehen, dass ich auch nicht auf der v2 CTP bin. – EBGreen
Ups ... nun da bist du. Ich bin auf der v2 CTP. Sieht so aus, als ob es repariert wird. :) – EBGreen