Tengo un directorio de archivos al que me gustaría agregar la extensión de archivo siempre que no tengan una extensión existente y especificada. Así que agregue .txt a todos los nombres de archivo que no terminan en .xyz. PowerShell parece ser un buen candidato para esto, pero no sé nada al respecto. ¿Cómo lo haría?Uso de PowerShell para agregar una extensión a los archivos
14
A
Respuesta
16
+1 a EBGreen, excepto que (al menos en XP) el parámetro "-excluir" para obtener-childitem no parece funcionar. El texto de ayuda (gci -?) En realidad dice "¡este parámetro no funciona correctamente en este cmdlet"!
Así puede filtrar de forma manual como esto:
gci
| ?{ !$_.PSIsContainer -and !$_.Name.EndsWith(".xyz") }
| %{ ren -new ($_.Name + ".txt") }
3
Considere el comando DOS FOR en un shell estándar.
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
Aquí es la forma Powershell:
gci -ex "*.xyz" | ?{!$_.PsIsContainer} | ren -new {$_.name + ".txt"}
O para que sea un poco más detallado y más fácil de entender:
Get-ChildItem -exclude "*.xyz"
| WHere-Object{!$_.PsIsContainer}
| Rename-Item -newname {$_.name + ".txt"}
EDIT: Hay, por supuesto nada malo con el DOS manera tampoco. :)
EDIT2: Powershell soporta la continuación de línea implícita (y explícita para el caso) y como la publicación de Matt Hamilton muestra que hace que sea más fácil de leer.
1
encontraron útil esta información durante el uso de PowerShell v4.
Get-ChildItem -Path "C:\temp" -Filter "*.config" -File |
Rename-Item -NewName { $PSItem.Name + ".disabled" }
Cuestiones relacionadas
- 1. agregar recursivamente la extensión de archivo a todos los archivos
- 2. ¿Cómo uso Powershell para agregar/eliminar referencias a un csproj?
- 3. PowerShell Script para buscar y reemplazar todos los archivos con una extensión específica
- 4. Extensión de archivo para PowerShell 3
- 5. ¿Cómo uso PowerShell para validar archivos XML en un XSD?
- 6. Nuget Powershell: cómo agregar dependencias nativas? cómo agregar archivos a un proyecto dentro de una carpeta?
- 7. Agregar extensión de archivo a archivos con bash
- 8. Uso de R para enumerar todos los archivos con una extensión especificada
- 9. Agregar extensión de archivo a archivo de extensión-menos
- 10. Cómo agregar la extensión .xml a todos los archivos en una carpeta en Unix/Linux
- 11. Uso de WIndows PowerShell 1.0 o 2.0 para evaluar el rendimiento de los archivos ejecutables
- 12. ¿Cómo buscar una cadena en varios archivos y devolver los nombres de los archivos en Powershell?
- 13. Agregar extensión a URL: Rails
- 14. Uso de .htaccess para restringir el acceso a los archivos
- 15. ¿Existe una forma estándar, a través de los sistemas operativos, de agregar "etiquetas" a los archivos
- 16. Cambiar el nombre de los archivos a minúsculas en Powershell
- 17. Utilice Regex/Powershell para cambiar el nombre de los archivos
- 18. 7Zip agregar cifrado a los archivos
- 19. Extensión de color Mercurial en Windows Powershell
- 20. Agregar NaCl en una extensión de Chrome
- 21. ¿Cómo puedo hacer que PowerShell ISE haga resaltado de sintaxis en archivos con una extensión personalizada?
- 22. ¿Puedo agregar métodos de extensión a una clase estática existente?
- 23. Agregar objetos a una matriz de objetos en Powershell
- 24. Uso de JScript en PowerShell
- 25. Los archivos fuente CUDA obtienen una extensión .cu. ¿Qué obtienen los archivos de cabecera?
- 26. Uso bate para iniciar script de PowerShell
- 27. Script de Powershell para eliminar archivos antiguos
- 28. Extensión de archivos grandes para git
- 29. Cómo decirle a 'PowerShell' Copiar-Elemento para copiar incondicionalmente archivos
- 30. Agregar referencia a dll en powershell 2.0
Estoy en xp y ejecuté eso exactamente igual sin ningún problema. – EBGreen
Admitiré que el -excluido no funciona como se espera si lo combina con el indicador -recurse. En ese caso, debe dar una ruta de inicio explícita. Déjame asegurarme de que no estoy en el v2 CTP también. – EBGreen
Oops ... bueno, ahí estás. Estoy en el v2 CTP. Parece que se está arreglando. :) – EBGreen