Поскольку этот поток немного разветвился в общем обсуждении текущих реализаций с плавающей запятой, я бы добавил, что есть проекты по исправлению их проблем.
Взгляните на https: // posithub.org/, который демонстрирует тип номера, называемый posit (и его предшественник unum), который обещает предложить лучшую точность с меньшим количеством бит. Если мое понимание верное, оно также фиксирует проблемы в вопросе. Весьма интересный проект, человек, стоящий за ним, является математиком Dr. Джон Густафсон . Все это с открытым исходным кодом, с множеством реализаций в C / C ++, Python, Julia и C # ( https://hastlayer.com/arithmetics ).
cd %windir%\system32\inetsrv
@echo off
for /F "tokens=* USEBACKQ" %%x in (
`appcmd list apppool /text:name`
) do (
echo|set /p= "%%x - " /text:name & appcmd.exe list apppool "%%x" /text:processModel.identityType
)
echo %date% & echo %time%
pause
Я нашел эту нить о том, что есть Interweb вещь. Сбрасывается до:
@echo off
setlocal enableextensions
for /f "tokens=*" %%a in (
'VER'
) do (
set myvar=%%a
)
echo/%%myvar%%=%myvar%
pause
endlocal
Вы также можете перенаправить вывод команды во временный файл, а затем поместить содержимое этого временного файла в свою переменную, likeuchashereby:
cmd > tmpFile
set /p myvar= < tmpFile
del tmpFile
Приобретите поток на Tom's Hardware.
Чтобы прочитать файл ...
set /P Variable=<File.txt
Чтобы записать файл
@echo %DataToWrite%>File.txt
note; с пробелами перед символом & lt;> вызывает добавление пробела в конце переменной, также
Чтобы добавить в файл, например, программу регистрации, сначала создайте файл с одним ключом ввода в он называется e.txt
set /P Data=<log0.log
set /P Ekey=<e.txt
@echo %Data%%Ekey%%NewData%>log0.txt
, ваш журнал будет выглядеть следующим образом:
Entry1
Entry2
и т. д.
В любом случае пара полезных вещей
FOR /F "tokens=* USEBACKQ" %%F IN (`command`) DO (
SET var=%%F
)
ECHO %var%
Я всегда использую USEBACKQ, так что, если у вас есть строка для вставки или длинное имя файла, вы можете использовать свои двойные кавычки, не нажимая эту команду.
Теперь, если ваш вывод будет содержат несколько строк, вы можете это сделать
SETLOCAL ENABLEDELAYEDEXPANSION
SET count=1
FOR /F "tokens=* USEBACKQ" %%F IN (`command`) DO (
SET var!count!=%%F
SET /a count=!count!+1
)
ECHO %var1%
ECHO %var2%
ECHO %var3%
ENDLOCAL
Надеемся на эту помощь
set a=%username%
echo %a%
set a="hello"
echo %a%
Я протестировал его так, и он сработал:
SET /P Var= | Cmd
Путем передачи команды в переменную приглашение вставляет результат команды «Cmd
» в переменную «Var
".
Обновление:
Это не работает, мой плохой, сценарий, который я сделал, был следующим:
SET /P Var= | dir /b *.txt
echo %Var%
Это на самом деле показывало, скажем, «test.txt
», но на самом деле он показывал результат команды «dir /b *.txt
», а не echo %var%
. Я запутался, так как оба выхода были одинаковыми.
в одной строке:
FOR /F "tokens=*" %g IN ('*your command*') do (SET VAR=%g)
выход команды будет установлен в% g, затем в VAR.
Дополнительная информация: https: // ss64. com / nt / for_cmd.html