2011-04-04 14 views

Respuesta

18
Get-ChildItem | Select-Object -ExpandProperty Name > files.txt 

o más corto:

ls | % Name > files.txt 

Sin embargo, puede fácilmente hacer lo mismo en cmd:

cmd /u /c "dir /b > files.txt" 

El interruptor /u dice cmd escribir cosas redirigidas en archivos como Unicode.

+0

PSH: ńóręąśóń -> ńóręąśóń CMD: ńóręąśóń -> ä˘r © Ą˘ä cambiar la fuente no funciona. –

+0

Se ve bien en la pantalla, pero no en el archivo. –

+1

Przemysław: use 'cmd/u' para iniciar' cmd' si desea que se redirijan elementos a los archivos para usar Unicode en lugar de seguir la página de códigos heredada. – Joey

3

Dado que powershell trata con objetos, debe especificar cómo desea procesar cada objeto en la tubería.

Este comando conseguirá imprimir sólo el nombre de cada objeto:

dir | ForEach-Object { $_.name } 
+0

Olvidó agregar | Out-File files.txt, pero lo obtuve de la segunda respuesta. Gracias. –

+0

Vaya, tienes razón. – tenpn

4

En PSH dir (que alias Get-ChildItem) le da objetos (como se señala en another answer), por lo que necesita para seleccionar qué propiedades desea . O bien con Select-Object (alias select) para crear objetos personalizados con un subconjunto de las propiedades del objeto original (o se pueden agregar propiedades adicionales).

Sin embargo en esta lata de hacerlo en la etapa de formato es probablemente más simple

dir | ft Name -HideTableHeaders | Out-File files.txt 

(ft es format-table.)

Si desea una codificación de caracteres diferente en files.txt (out-file utilizará UTF-16 por defecto) usar la bandera -encoding, también se puede añadir:

dir | ft Name -HideTableHeaders | Out-File -append -encoding UTF8 files.txt 
+0

Hola Richard. ¿Me puede decir por qué ese código me devuelve una fila vacía entre cada artículo? –

+1

@NickRulez: "Funciona en mi máquina". 'Format-Table' se rellenará con espacios de ancho especificado (el ancho de la sesión actual es el predeterminado): ¿podría ser eso? Usar '% {$ _. Name}' ('%' = 'foreach-object') en lugar de la tabla de formato evitará esto. – Richard

+0

Gracias por su respuesta. :) Si uso foreach-object todo funciona bien. La salida de ft es correcta. El problema surge cuando canalizo hacia fuera de archivo. En este caso, tengo una fila vacía, luego el nombre del archivo, otra fila vacía, el nombre del archivo, etc. No sé cómo verificar el ancho de la sesión actual. –

13

Get-ChildItem en realidad ya tiene una bandera para el equivalente de dir /b:

Get-ChildItem -name (o dir -name)

+0

Agradable. Todavía no lo sabía. Suelo ir a la ruta "Producir objetos, proyectar en algo útil". – Joey

1

En pocas palabras:

dir -Name > files.txt 
+1

realmente debería agregar alguna referencia o documentación para esto o mejor, explíquelo –

+0

Lo sentimos, pero las otras publicaciones tampoco parecen haber sido provistas con documentos. De todos modos, no puedo obtener una documentación adecuada para mi respuesta, pero la utilizo como 'el equivalente de dir/b> files.txt' que funciona favorablemente. – Jet

+0

Entonces, si todos saltan de un puente, ¿está bien que lo hagas tú también? Solo debe preocuparse por la calidad de su propio trabajo, no compararlo con los demás. Estamos proporcionando soluciones técnicas, que siempre por la naturaleza del estándar de la industria requieren algún tipo de explicación, elaboración y referencias en el menor de los casos. Tan simple como eso, realmente no quieres hacerlo, está bien, pero no esperes que tu respuesta reciba atención de calidad o que se reciba bien en general. Fue para ayudarte, no una recriminación, tomar la sugerencia constructiva, no pelear ni justificarla. –

Cuestiones relacionadas