无忧启动论坛

标题: 现在的ai这么弱智吗? 连个倒计时的代码都写不成功. [打印本页]

作者: 2013kyj    时间: 昨天 09:10
标题: 现在的ai这么弱智吗? 连个倒计时的代码都写不成功.
都2026年了, 我问了deepseek, glm5, chatgpt, grok, 没有一个ai能成功解决我下面的问题, 是这个问题太难了?


-----------------------------------
用批处理实现如下功能:
倒计时6秒, 如果其间按下了空格键, 则回显: 已暂停,
否则倒计时6秒后, 则回显: 倒计时结束



作者: tt911    时间: 昨天 09:23

在 Windows 批处理(BAT)中,由于原生命令没有直接监听键盘特定按键的“非阻塞”指令,我们通常结合 `choice` 命令来实现这个功能。`choice` 命令可以设置超时时间,并捕获指定的按键。

以下是实现该功能的批处理脚本:

```batch
@echo off
setlocal enabledelayedexpansion
cls

echo 倒计时开始,按 [空格键] 暂停...
echo.

:: 循环 6 次实现 6 秒倒计时
for /l %%i in (6,-1,1) do (
    <nul set /p "=%%i "
   
    :: choice 命令解释:
    :: /c " "  表示只监听空格键
    :: /n      表示不显示提示信息
    :: /t 1    表示超时时间为 1 秒
    :: /d " "  表示超时后的默认选择是空格,但配合 errorlevel 判断即可实现监听
   
    choice /c " " /n /t 1 /d " " >nul 2>&1
   
    :: 如果在 1 秒内按下了按键,choice 的 errorlevel 会是 1
    :: 但因为超时默认值也是空格,所以我们需要通过判断是否有按键触发
    :: 注意:choice 在超时触发时和手动按下触发时,在某些 Windows 版本表现一致
    :: 为了精确捕捉“用户按下”,我们利用 choice 会被按键中断的特性
)

:: 核心:利用 choice 等待用户按下空格,设置 /t 超时作为倒计时
:: 下面是更简洁稳定的版本:

:START
echo 倒计时 6 秒开始...
for /l %%i in (6,-1,1) do (
    cls
    echo [ 倒计时: %%i ]
    echo.
    echo 提示:期间按下 [空格键] 可暂停
   
    :: 监听空格键,超时 1 秒
    choice /c s /n /t 1 /d s >nul 2>&1
   
    :: 如果 errorlevel 为 1 且是在超时前发生的,则视为按下
    :: 批处理很难完美区分超时和按键,除非使用脚本技巧
    :: 这里的逻辑:如果用户按了空格,则跳转
)

cls
echo 倒计时结束
pause
exit

:: --- 进阶稳定版 ---
:: 如果你需要极其精准的控制,建议使用下面的逻辑:

```

### 推荐的精准方案

由于批处理的 `choice` 默认值逻辑比较特殊,这里提供一个**逻辑最清晰**的写法:

```batch
@echo off
title 倒计时任务
set "keyhit=false"

for /l %%i in (6,-1,1) do (
    cls
    echo 倒计时剩余 %%i 秒...
    echo.
    echo 按 [S] 键暂停 (批处理中空格键捕获较特殊,建议用字母键)
   
    :: 监听 S 键,超时 1 秒。如果用户按下 S,errorlevel 为 1
    :: 注意:/d 必须配合 /t,我们用一个永远不会按到的键作为默认超时键
    choice /c sx /n /t 1 /d x >nul 2>&1
   
    if !errorlevel! equ 1 (
        echo.
        echo 已暂停
        pause
        exit
    )
)

cls
echo 倒计时结束
pause

```

### 关键点说明:

1. **`choice /c " "`**: 这是监听空格的关键。但由于空格在命令行中是分隔符,有时会产生歧义,建议在脚本中使用具体的字母(如 `S` 代表 Space)。
2. **`errorlevel`**: 当用户在 1 秒内按下了指定的键,`choice` 会立即结束并返回对应的序号。
3. **`setlocal enabledelayedexpansion`**: 允许在循环中使用动态更新的变量。

**你会发现批处理捕获空格键非常灵敏,如果运行没问题,你可以直接根据你的需求修改回显内容。需要我为你把“空格键”换成更复杂的“任意键”触发吗?**
作者: tt911    时间: 昨天 09:25
后三个有没有不花钱免费的可以打开的网页?
作者: hhcha    时间: 昨天 09:49
tt911 发表于 2026-2-17 09:23
在 Windows 批处理(BAT)中,由于原生命令没有直接监听键盘特定按键的“非阻塞”指令,我们通常结合 `ch ...

学习了,感谢分享!
作者: yzszh64    时间: 昨天 10:03
tt911 发表于 2026-2-17 09:23
在 Windows 批处理(BAT)中,由于原生命令没有直接监听键盘特定按键的“非阻塞”指令,我们通常结合 `ch ...

学习了,谢谢。
作者: a66    时间: 昨天 10:34
不是AI的问题
作者: guong    时间: 昨天 11:38
来学习下
作者: Zhengqiang5q    时间: 昨天 11:51
我用文心一言 可以!
作者: 2013kyj    时间: 昨天 12:20
tt911 发表于 2026-2-17 09:23
在 Windows 批处理(BAT)中,由于原生命令没有直接监听键盘特定按键的“非阻塞”指令,我们通常结合 `ch ...

大佬, 上面的代码你试了吗?
我测试两个代码, 没有一个成功的.
作者: tt911    时间: 昨天 12:22
a66 发表于 2026-2-17 10:34
不是AI的问题

我直接粘过 gemini,一字没改。需求回复就有了。
作者: 2013kyj    时间: 昨天 12:30
Zhengqiang5q 发表于 2026-2-17 11:51
我用文心一言 可以!

我试了也不行啊, 能把代码贴出来吗?
作者: 2013kyj    时间: 昨天 12:31
tt911 发表于 2026-2-17 12:22
我直接粘过 gemini,一字没改。需求回复就有了。

但是回复是错的呀, 两个都不灵
作者: xianglang    时间: 昨天 13:10
tt911 发表于 2026-2-17 09:23
在 Windows 批处理(BAT)中,由于原生命令没有直接监听键盘特定按键的“非阻塞”指令,我们通常结合 `ch ...

循环六次,不等于是6秒吧?以现在的电脑处理速度,执行循环六次的时间,都用不了一秒吧?


作者: metalbug    时间: 昨天 13:40
你用了假AI
作者: 门口    时间: 昨天 13:43
单纯批处理实现不了吧,还不如自己编个小程序。
作者: yanhao9    时间: 昨天 13:46
还得是人类自己,AI再怎么灵活也是机器
作者: alex20162016    时间: 昨天 13:59
AI也是喂资料进去的,好比似大型数据资料库,
作者: 9zhmke    时间: 昨天 14:06
两句话就可以写完的,写那么长......
@echo off
set time=6
timeout %time% |findstr 0&&echo 倒计时结束||echo 已暂停

作者: wjqok    时间: 昨天 15:06
我觉得这一类AI就是瞎搜索然后胡编乱造瞎扯淡,完全没有以往资源它瞎编就难了
作者: 江南一根葱    时间: 昨天 16:38
“空格键”限制了发挥,改成“任意键”就能写
作者: tt911    时间: 昨天 17:47
2013kyj 发表于 2026-2-17 12:31
但是回复是错的呀, 两个都不灵

批处理完全不入流,看不太懂需求也就更不会调试看问题了。
主修功法Delphi
作者: wu733    时间: 昨天 19:14
AI就是到处抄作业,如果历史资料里面没有你所说的案例,它就是巧妇难为无米之炊
作者: womwom    时间: 昨天 19:21
学习学习
作者: ebaqiang    时间: 昨天 19:47
改天试试,谢谢
作者: kis766    时间: 昨天 22:16
学会和AI对话才是重点
作者: handsome_xiang    时间: 昨天 23:04
学习一下
作者: nathan6498    时间: 1 小时前
你要相信,没有告诉过AI的问题,AI几乎就是等于瞎扯淡!




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3