Supongamos que tengo un valor como "Abc_123" que se almacena en una variable en un archivo por lotes (cmd). Quiero terminar con una variable que contiene solo "123". ¿Hay alguna forma integrada de hacer esto?
No soy muy exigente con el método o el rendimiento, siempre que esté integrado en un sistema típico de Windows (Vista / 2008).
windows
batch-file
string-manipulation
Conocer
fuente
fuente
help set
como se menciona en ¿Cuál es la mejor manera de hacer una subcadena en un archivo por lotes? en StackOverflow.%string:~%start%,%len%%
CALL
, likeCALL SET _substring=%%_donor:~%_startchar%,%_length%%%
Si solo quiere todo después del guión bajo (y no necesariamente conoce la longitud de la cadena o dónde está el guión bajo, pero puede confiar en que solo haya un guión bajo), intente:
Básicamente, su cadena se dividirá en tokens utilizando el guión bajo como delimitador (delims = _). Solo el segundo (tokens = 2) se pasará (como variable %% a) al ciclo for. El bucle solo se ejecutará una vez, ya que se trata de una sola cadena en este caso.
Si desea guardar las cosas antes y después del guión bajo, intente:
Tenga en cuenta que %% a es la variable para el primer token de la división; %% b es la variable para el segundo token de la división.
fuente
Si encuentra que el lenguaje por lotes no es lo suficientemente potente como para hacer lo que desea, y probablemente no le llevará demasiado tiempo llegar a ese punto, puede usar Windows PowerShell . Esto no está instalado de forma predeterminada en todas las versiones de Windows, pero puede descargarlo de forma gratuita.
Si no te gusta el lenguaje PowerShell, está Perl. Sin embargo, tendrá que instalar eso en todos los sistemas. También hay otros.
fuente
fuente
*
codicioso? Solía un buen ol 'IF NOT ... GOTO :replace
, pero sería bueno si hubiera una mejor manera._
hay, pase al último, luegoset var