批处理脚本未运行

时间:2015-02-26 18:19:49

标签: windows batch-file architecture batch-processing

你可以帮我吗?

这段脚本没有运行,我无法理解为什么。

@echo off
ver | findstr /i "5\.1\."
if %ERRORLEVEL% EQU 0 (
    set os_ver="xp"
)

ver | findstr /i "6\.1\." > nul
if %ERRORLEVEL% EQU 0 (
    set os_ver="7"
)

if %os_ver% == "xp" (
    set os_bits="32"
)

if %os_ver% == "7" (
    if %PROCESSOR_ARCHITECTURE% == "x86" (
        set os_bits="32"
    ) else (
        set os_bits="64"
    )
    echo %os_bits%
)
pause
尽管如此,它并没有回应任何事情; ECHO已被停止"或者" ECHO被激活"

更新: 我发布了整个代码,因为人们说它正在运行

UPDATE2: 我使用的是Windows 7 64位

2 个答案:

答案 0 :(得分:1)

批处理脚本似乎工作正常。如果您的机器不是Windows 7,它将不会回显。

尝试以下方法:

@echo off

set os_ver="unknown!"
set os_bits="unknown!"

ver | findstr "5\.1" > nul
if %ERRORLEVEL% EQU 0 (
    set os_ver="xp"
)

ver | findstr "6\.1" > nul
if %ERRORLEVEL% EQU 0 (
    set os_ver="7"
)

if %os_ver% == "xp" (
    set os_bits="32"
)

if %os_ver% == "7" (
    if %PROCESSOR_ARCHITECTURE% == "x86" (
        set os_bits="32"
    ) else (
        set os_bits="64"
    )
)

echo os_ver = %os_ver%
echo os_bits = %os_bits%

pause

更新:评论者eryksun提供了正确的原因,为什么这个代码工作,而ops即使他不在Windows7上。 (好抓)

  

在OP的版本中,echo%os_bits%在设置os_bits的同一命令中执行。在解析和调度命令时,os_bits不存在(除非它已经设置),所以它只是执行echo,它打印echo是打开还是关闭。 - eryksun

答案 1 :(得分:0)

试试这个:

@echo off
setlocal
if "%PROCESSOR_ARCHITECTURE%" equ "x86" (
    set os_bits="32"
) else (
    set os_bits="64"
)
echo %os_bits%