¿Es posible establecer la salida de una declaración de un archivo por lotes a una variable, por ejemplo:
findstr testing > %VARIABLE%
echo %VARIABLE%
windows
batch-file
Dennis
fuente
fuente

Respuestas:
Siempre uso USEBACKQ, de modo que si tiene una cadena para insertar o un nombre de archivo largo, puede usar sus comillas dobles sin arruinar el comando.
Ahora, si su salida contendrá varias líneas, puede hacer esto
fuente
ENABLEDELAYEDEXPANSION|en cuyo caso no funciona.^|en lugar de|, como se describe aquícommandtodos modos, por favor? Estoy seguro de que está devolviendo un código distinto de cero, pero%ERRORLEVEL%siempre contiene 0, sin importar dónde intente usarlo (incluso dentro deldobloque). Así que supongo que una parte de eseforconstructo lo está sobrescribiendo. Por cierto, es increíble lo loco que se necesita un código de aspecto para algo tan elemental.Encontré este hilo en esa cosa de Interweb. Se reduce a:
También puede redirigir la salida de un comando a un archivo temporal y luego colocar el contenido de ese archivo temporal en su variable, como por ejemplo aquí. Sin embargo, no funciona con entrada multilínea.
Crédito al hilo en el hardware de Tom.
fuente
en una sola línea:
la salida del comando se establecerá en% g y luego en VAR.
Más información: https://ss64.com/nt/for_cmd.html
fuente
Para leer un archivo ...
Para escribir un archivo
Nota; tener espacios antes del carácter <> hace que se agregue un espacio al final de la variable, también
Para agregar a un archivo, como un programa de registro, primero haga un archivo con una sola tecla enter llamada e.txt
su registro se verá así
y así
De todas formas un par de cosas útiles
fuente
Estas respuestas estaban tan cerca de la respuesta que necesitaba. Este es un intento de ampliarlos.
En un archivo por lotes
Si está ejecutando desde un
.batarchivo y desea una sola línea que le permita exportar un comando complicado comojq -r ".Credentials.AccessKeyId" c:\temp\mfa-getCreds.jsona una variable llamada,AWS_ACCESS_KEYentonces quiere esto:En la línea de comando
Si está en el
C:\indicador, desea una sola línea que le permita ejecutar un comando complicado, comojq -r ".Credentials.AccessKeyId" c:\temp\mfa-getCreds.jsonuna variable llamada,AWS_ACCESS_KEYentonces desea esto:Explicación
La única diferencia entre las dos respuestas anteriores es que en la línea de comando, utiliza un solo% en su variable. En un archivo por lotes, debe duplicar los signos de porcentaje (%%).
Dado que el comando incluye dos puntos, comillas y paréntesis, debe incluir la
USEBACKQlínea en las opciones para que pueda usar comillas inversas para especificar el comando que se ejecutará y luego todo tipo de caracteres divertidos dentro de él.fuente
Si no desea generar un archivo temporal y luego leerlo en una variable, este código almacena el resultado del comando directo en una variable:
Si desea encerrar la cadena de búsqueda entre comillas dobles:
Si desea almacenar este código en un archivo por lotes, agregue un símbolo% adicional:
Un ejemplo útil para contar la cantidad de archivos en un directorio y almacenar en una variable: (ilustra las tuberías)
Tenga en cuenta el uso de comillas simples en lugar de comillas dobles "o` acento grave en los soportes de mando. Este es alternativa más limpia a
delims,tokensousebackqenforbucle.Probado en Win 10 CMD.
fuente
fuente
appcmdno es un programa estándar y no puedo ver dónde asigna la salida del programa a una variable. Por fin necesitas algunas explicaciones másLo probé así y funcionó:
Al canalizar el comando en una variable, el indicador insertará el resultado del comando "
Cmd" en la variable "Var".Actualizar:
No funciona, mi mal, el guión que hice fue este:
En realidad estaba mostrando, digamos "
test.txt", pero en realidad mostraba el resultado deldir /b *.txtcomando " ", no elecho %var%. Me confundí ya que ambas salidas eran iguales.fuente
pipe the command into a variable prompt, debería haberlo escritodir /b *.txt | SET /P Var=para obtener la dirección correcta de la tubería. PD: ¡tampoco funciona de esa manera!Espero que esto ayude
fuente