¿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ícommand
todos 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 deldo
bloque). Así que supongo que una parte de esefor
constructo 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
.bat
archivo y desea una sola línea que le permita exportar un comando complicado comojq -r ".Credentials.AccessKeyId" c:\temp\mfa-getCreds.json
a una variable llamada,AWS_ACCESS_KEY
entonces 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.json
una variable llamada,AWS_ACCESS_KEY
entonces 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
USEBACKQ
lí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
,tokens
ousebackq
enfor
bucle.Probado en Win 10 CMD.
fuente
fuente
appcmd
no 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 *.txt
comando " ", 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