Cómo analizar la salida de git status y la envió a otro programa con un lote de archivos en Windows? [cerrado]

0

Pregunta

Quiero capturar el resultado de git status -s que de salida será algo como esto:

 M /path/to/modified/file.py
 M /path/to/another/modified/file2.py

Los 3 primeros caracteres deben ser eliminados. Quiero tener este:

/path/to/modified/file.py, /path/to/another/modified/file2.py

(tomar cada línea de git status -s, la franja de los primeros 3 caracteres y la cola con una coma en una sola línea).

A continuación, voy a enviar esa cadena a otro programa (como argumento) que trabajará en los archivos.

Es posible hacer eso con un proceso por lotes (.la mtd) de archivos en Windows?

Vi que usted puede hacer una subcadena con algo como set str=%str:~3,10% pero yo no había encontrado la forma de capturar la salida de git y dividida por líneas y obtener la longitud de cada línea...

batch-file git
2021-11-23 01:09:49
1

Mejor respuesta

1

No tengo git en mi sistema y por lo tanto esto no está probado, el resultado se basa simplemente en los ejemplos que usted tiene en su pregunta.

El for bucle asignará a cada uno de los resultados de una metavariable %%i en este caso, primero se tira de los dos primeros caracteres M y, a continuación, agregue cada resultado a una sola variable. Nosotros, a continuación, simplemente franja de los primeros dos caracteres de ser un ,

@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('git status -s') do (
   set "tmp=%%i"
   set "tmp=!tmp:~2!"
   set "result=!result!,!tmp!"
)
echo %result:~2%

Nota

for sólo asignar los resultados si son de stdout y no stderr, Por lo que en este caso se asignará a los mensajes de error de la variable.

2021-11-23 09:10:42

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................