这是我到目前为止所拥有的:
@ECHO OFF
SetLocal EnableDelayedExpansion
:loop
set vara = 0
set varb = 0
if NOT %vara% == %varb% (
for /f "delims=" %%x in ('type Chat.txt') do (
set /a %vara%=%vara%+1
set "Var=%%x"
ECHO !Var!
)
set %varb=%vara%
)
goto loop
pause
但是当它打开时它会立即崩溃,有什么帮助吗? 编辑: 现在我有了
@ECHO OFF
SetLocal EnableDelayedExpansion
title NOOOOPPPEEEE
set varb=5
:loop
set vara=0
for /f "delims=" %%x in ('type Chat.txt') do (
set /a vara=vara+1
echo %vara%
)
echo %vara%
echo %varb%
pause
if NOT %vara% == %varb% (
cls
for /f "delims=" %%x in ('type Chat.txt') do (
set %varb%=%vara%
set "Var=%%x"
ECHO !Var!
)
echo %varb%
)
goto loop
pause
但它不会将varb更改为vara(在这种情况下,我使用的文件为3)
答案 0 :(得分:0)
遇到vara
时,varb
和if
都未设置。
使用标准set
命令,=
两侧的空格很重要,因此您的命令将“vara space ”设置为“ space 0"
您可以使用set /a
进行数字分配,其中会忽略空格。
由于两个变量都没有设置,if
命令变为
if == (
所以cmd
会产生有关问题的错误消息。
由于您显然是通过点击快捷方式运行,cmd
然后关闭,您什么都看不见。
通常假设您正在开发cmd
脚本,那么您正在从命令提示符运行。您可以通过查找“命令提示符”(在“所有程序>附件”下,如果我的记忆为我服务)和SEND
将其添加到桌面来执行此操作。如果单击该新快捷方式,您将获得一个黑屏,其中开发更简单。
BTW,
set %varb=%vara%
及其在脚本中使用的变体将名为“({strong>内容的varb
)”的变量设置为... - 它不会设置“varb”
AND 在解析最外层代码块时解析任何%var%
,因此当时vara
= 0遇到if
,然后
set /a %vara%=%vara%+1
将尝试在内循环中每时间将变量“0”设置为(0 + 1)的值
有关“delayedexpansion”的更多内容,请参阅无穷无尽的SO项目。