Mam katalog plików, do których chciałbym dołączyć rozszerzenie pliku, o ile nie ma istniejącego, określonego rozszerzenia. Dodaj .txt do wszystkich nazw plików, które nie kończą się na .xyz. PowerShell wydaje się być dobrym kandydatem do tego, ale nie wiem nic na ten temat. Jak mógłbym to załatwić?Używanie PowerShell do dodawania rozszerzeń do plików
14
A
Odpowiedz
16
+1 do EBGreen, z tym że (przynajmniej na XP) parametr "-exclude" dla get-childitem nie działa. Tekst pomocy (gci -?) Mówi, że "ten parametr nie działa poprawnie w tym cmdlecie"!
Więc można filtrować ręcznie tak:
gci
| ?{ !$_.PSIsContainer -and !$_.Name.EndsWith(".xyz") }
| %{ ren -new ($_.Name + ".txt") }
3
Rozważ polecenie DOS w standardowej powłoce.
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
Oto sposób PowerShell:
gci -ex "*.xyz" | ?{!$_.PsIsContainer} | ren -new {$_.name + ".txt"}
Albo zrobić to trochę bardziej gadatliwy i łatwiejsze do zrozumienia:
Get-ChildItem -exclude "*.xyz"
| WHere-Object{!$_.PsIsContainer}
| Rename-Item -newname {$_.name + ".txt"}
EDIT: Nie ma oczywiście nic złego w Sposób DOS albo. :)
EDIT2: Powershell wspiera niejawną (i wyraźną na ten temat) kontynuację linii, a jak pokazuje post Matt Hamiltona, ułatwia czytanie.
1
uznało tę pomocne podczas korzystania PowerShell v4.
Get-ChildItem -Path "C:\temp" -Filter "*.config" -File |
Rename-Item -NewName { $PSItem.Name + ".disabled" }
Powiązane problemy
- 1. Używanie rubyzip do dodawania plików i katalogów zagnieżdżonych do zipoutputstream
- 2. Używanie Pythona do dodawania listy plików do pliku zip
- 3. Używanie git hook do dodawania licencji i wersji aplikacji do komentowania u góry plików źródłowych
- 4. Używanie adnotate do dodawania różnych adnotacji do różnych aspektów
- 5. Używanie DateInterval do dodawania tygodni do obiektu DateTime
- 6. Używanie Powershell do zarejestrowania pliku w Gac
- 7. Używanie libcurl do przesyłania plików do DropBox
- 8. używanie R do kopiowania plików
- 9. Jak zdefiniować szablon do dodawania wielu plików do projektu?
- 10. Dodatek Ember do dodawania plików do katalogu głównego
- 11. Usuń odniesienia do rozszerzeń
- 12. Używanie rozszerzeń z Selenium (Python)
- 13. PowerShell, metody rozszerzeń i łatanie małp
- 14. Batch File Do pętli na liście rozszerzeń plików z wyłączeń
- 15. Używanie rozszerzeń Liquibase z Maven
- 16. Python Usuwanie niektórych rozszerzeń plików
- 17. Używanie R do analizowania plików csv Surveymonkey
- 18. Używanie usługi ServiceStack do przesyłania plików obrazów
- 19. Używanie python lxml.etree do dużych plików XML
- 20. Używanie Rijndael do szyfrowania/odszyfrowywania plików
- 21. Używanie pysmbc do odczytu plików przez sambę
- 22. Używanie Twig do dynamicznych plików JavaScript
- 23. Używanie PHPExcel do automatycznego generowania plików Excela
- 24. dodawania atrybutów do form_open_multipart
- 25. Przycisk dodawania do PreferenceScreen
- 26. Skojarzenie rozszerzeń plików z programem
- 27. git grep przez rozszerzeń plików
- 28. Metody rozszerzeń do przodu kompatybilne
- 29. Przesyłanie wielu plików i używanie czytnika plików do podglądu
- 30. Używanie plików cython .pxd do rozszerzania czystych plików Pythona
Jestem na xp i uruchomiłem to dokładnie tak, jak jest bez problemu. – EBGreen
Przyznam, że -exclude nie działa zgodnie z oczekiwaniami, jeśli połączysz go z flagą -recurse. W takim przypadku musisz podać wyraźną ścieżkę początkową. Pozwól mi upewnić się, że nie jestem również na CTP v2. – EBGreen
Ups ... cóż, jesteś. Jestem na CTP v2. Wygląda na to, że jest naprawiony. :) – EBGreen