Línea de comandos para ejecutar comandos en todos los archivos de un directorio (más subdirectorios, si es posible

14

Supongo que esto es bastante fácil de hacer, pero no tengo experiencia con las utilidades de línea de comandos de Windows. Básicamente, necesito iterar sobre todos los archivos en un directorio (excelente si puede hacer subdirectorios, pero puedo ejecutarlo en cada uno de los 5 directorios si es necesario), obtener el nombre como una variable y hacer que se ejecute

"C:\Program Files\ImageMagick-6.7.6-Q16\convert.exe" -compress LZW 
   -colorspace Gray -colors 32 file_var file_var

Vi dinámicamente nombrar archivos en un símbolo del sistema para el bucle . ¿Podría usar eso (intercambiando el SET ... con el comando anterior)? El espacio en la computadora en cuestión es más que limitado, por lo que no puedo realizar una copia de seguridad antes de ejecutar esto en esta etapa (mal, lo sé).

Robert
fuente
Robert, si has logrado responder a tu propia pregunta, agrega tu propia respuesta y acéptala como la correcta.
Julian Knight
No creo que sea lo que quieres, al final ( "%%f" "%%f") solo colocará el nombre de archivo (con una ruta totalmente calificada) dos veces. Probablemente quiera usar algo como "%%f" "%%~dpnf.gif"cambiar la extensión del archivo de salida.
Synetech
@JulianKnight - gracias, en realidad intenté regresar cuando, pero creo que hubo una espera forzada para hacerlo. Se olvidó de la pregunta desde entonces.
Robert

Respuestas:

5

Abra PowerShell

$files = Get-ChildItem -Recurse 
foreach ($file in $files){
    c:\windows\System32\notepad.exe $file.FullName
}

Get-ChildItem recupera una lista de archivos como objetos del subdirectorio actual. "-recurse" incluirá subdirectorios. Esto lo coloca en una matriz $ Files.

El ciclo foreach recorre cada archivo y llama al bloc de notas con el argumento de la línea de comandos de la ruta completa del nombre de archivo a cada archivo.

PRECAUCIÓN: pruebe el código anterior en un directorio con algunos archivos de texto pequeños, ya que abrirá una instancia de Bloc de notas para cada archivo.

Eso debería darle una idea de cómo hacer lo que está buscando hacer.

Adiós
fuente