Как легко хранить версию python в переменной внутри .bat-файла? [Дубликат]

Многие многочисленные дубликаты этого вопроса задают вопрос о влиянии округления с плавающей запятой на конкретные числа. На практике легче понять, как это работает, глядя на точные результаты вычислений, а не просто на чтение. Некоторые языки предоставляют способы сделать это - например, преобразование float или double в BigDecimal в Java.

Так как это вопрос, связанный с языком, ему нужны языковые агностические инструменты, такие как как Десятичный преобразование с плавающей запятой .

Применяя его к числам в вопросе, рассматриваемым как удваивает:

0,1 преобразуется в 0,1000000000000000055511151231257827021181583404541015625,

0,2 преобразуется в 0.200000000000000011102230246251565404236316680908203125,

0,3 конвертируется в 0,29999999999999999989897769753748434595763683319091796875 и

0,30000000000000004 преобразуется в 0,3000000000000000444089209850062616169452667236328125.

Добавление первых двух чисел вручную или в десятичный калькулятор, такой как Full Precision Calculator , показывает точную сумму фактических входов: 0.3000000000000000166533453693773481063544750213623046875.

Если округлить до эквивалента 0,3, ошибка округления будет 0.0000000000000000277555756156289135105907917022705078125. Округление до эквивалента 0,30000000000000004 также дает ошибку округления 0,0000000000000000277555756156289135105907917022705078125.

Возвращаясь к конвертеру с плавающей запятой, необработанный шестнадцатеричный показатель для 0.30000000000000004 равен 3fd3333333333334, который заканчивается четной цифрой и, следовательно, является правильным результатом.

119
задан g t 2 February 2016 в 10:12
поделиться

7 ответов

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
1
ответ дан Dacke 28 August 2018 в 10:32
поделиться

Я нашел эту нить о том, что есть 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.

41
ответ дан dolphy 28 August 2018 в 10:32
поделиться

Чтобы прочитать файл ...

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 

и т. д.

В любом случае пара полезных вещей

13
ответ дан MaxMinecraft101e 28 August 2018 в 10:32
поделиться
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
178
ответ дан Mechaflash 28 August 2018 в 10:32
поделиться

Надеемся на эту помощь

set a=%username%
echo %a%    
set a="hello"
echo %a%
-12
ответ дан MichaelS 28 August 2018 в 10:32
поделиться

Я протестировал его так, и он сработал:

SET /P Var= | Cmd

Путем передачи команды в переменную приглашение вставляет результат команды «Cmd» в переменную «Var ".

Обновление:

Это не работает, мой плохой, сценарий, который я сделал, был следующим:

SET /P Var= | dir /b *.txt
echo %Var%

Это на самом деле показывало, скажем, «test.txt», но на самом деле он показывал результат команды «dir /b *.txt», а не echo %var%. Я запутался, так как оба выхода были одинаковыми.

-3
ответ дан player0 28 August 2018 в 10:32
поделиться

в одной строке:

FOR /F "tokens=*" %g IN ('*your command*') do (SET VAR=%g)

выход команды будет установлен в% g, затем в VAR.

Дополнительная информация: https: // ss64. com / nt / for_cmd.html

15
ответ дан Yuri 28 August 2018 в 10:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: