bat批处理ECHO 处于关闭状态是怎么回事

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bat批处理ECHO 处于关闭状态是怎么回事相关的知识,希望对你有一定的参考价值。

@echo off&setlocal enabledelayedexpansion
set YUIFOLDER=D:\yuicompressor-2.4.7\build
set JSFOLDER=D:\js
@echo 正在查找 javascript
chdir /d %JSFOLDER%
for /r %%a in (*.js) do (
rem @echo 正在压缩 %%a
@echo %%a
set v = %%a
echo !v!
rem @java -jar %YUIFOLDER%\yuicompressor-2.4.7.jar --charset UTF-8 %%~a -o %%~a
rem @java -jar %YUIFOLDER%\yuicompressor-2.4.7.jar %%~a -o %%~a
endlocal
)
echo 完成!
pause

代码如上 但会报错 !v!显示出来的是常量

bat批处理ECHO处于关闭状态,是设置错误造成的,解决方法如下:

1、首先按【Win + R】快捷键打开【运行】对话框,输入“cmd”后按Enter键。

2、先来看一下echo关闭状态时cmd的显示情况,从下图可以看到,虽然敲了多个回车,但是没有任何提示符出现,好像cmd出了问题一样。

3、这时输入【echo】命令查看一下当前回显的状态,可以看到“echo处于关闭状态”。

4、这时输入命令【echo on】,就完成了。

5、再看一看【echo】命令“回显”的功能,即后面跟什么,就在控制台回显什么,步骤图如下所示。

6、如果忘记echo的用法,输入【echo /?】按Enter键,就完成了。

参考技术A 你先用echo off 关掉了回显,然后用echo显示内容的时候,如果后面的内容为空,就会被认为是单纯的echo命令,这个命令是用来查看当前的回显状态。而当前状态就是 echo 关闭。所以有这个结果。楼上那位说得很好,去掉@echo off ,查看是哪一步出错了。 参考技术B 标题与代码的问题不一样,楼上有网友回答了标题的问题
把endlocal这行去掉就行了(它把变量延迟关了所以不能正常显示!v!)
看得出来这段代码是拼起来的,单纯就这段效果来说把&setlocal enabledelayedexpansion和
set v = %%a
echo !v!
及endlocal
都去掉都行
参考技术C 删掉@echo off
看看是哪里出了问题,一般这种提示都代表变量值为空!
参考技术D 真的只差一点( IF DEFINED aa echo.!aa!>>%%~na.tem ),修改后如下
@echo off &setlocal enabledelayedexpansion
echo 正在查找替换请等候...
set str1=123456
set str2=765432
for /f "delims=" %%a in ('dir /b/a-d *.txt') do (
copy nul %%~na.tem>nul
for /f "tokens=1* delims=:" %%b in ('findstr /n ".*" "%%a"') do (
if "%%c"=="" (echo.>>%%~na.tem) else (
set aa=%%c & set aa=!aa:%str1%=%str2%!
IF DEFINED aa echo.!aa!>>%%~na.tem ))
del "%%a" & ren "%%~na.tem" "%%a" )
echo 已完成,按任意键退出...
pause>nul

执行下面的bat后,一直是echo处于关闭状态,而且ping的数据也没有保存。

执行下面的bat后,一直是echo处于关闭状态,而且ping的数据也没有保存。想达到的目的是,根据当天的日期保存ping数据,然后数据里面加上时间。
@echo on
:START
echo >>aa.txt
ping 192.168.100.104 >d:\%date:~0,4%%date:~5,2%%date:~8,2%.txt
for /f "tokens=* delims= " %%i in (temp.txt) do (echo %date% %time:~0,5% %%i>>aa.txt)
goto START

大神们看看 哪儿有错误。

@echo off
set "str=E:\%date:~0,4%%date:~5,2%%date:~8,2%.txt"
del "%str%" /f/s/q >nul
echo.正在测试,请勿关闭...
echo.本次测试时间为:%time% >>%str%
for /f "delims=" %%a in ('ping 192.168.1.1') do (
echo.%%a >>%str%
)
echo.测试完成,生成文件:%str%&pause>nul

1、你的逻辑都有问题啊,而且你自写的批处理感觉起来像东拼西凑起来的。
2、你的第四行使用〉而不是〉〉就等于每次都是新建,最后显示的结果只有一行。
3、ECHO处于关闭状态是因为你的第三行,应该为:echo. >>aa.txt
4、FOR语句中的TEMP.txt是哪里出来的?上文根本没看到有啊。。

总而言之,太乱了,哈哈。
参考技术A @echo on这里。。
换成@echo off
就ok咯

以上是关于bat批处理ECHO 处于关闭状态是怎么回事的主要内容,如果未能解决你的问题,请参考以下文章

bat中echo处于关闭状态

在运行bat批处理文件时echo处于关闭状态如何解决

如何处理ECHO 处于关闭状态

执行下面的bat后,一直是echo处于关闭状态,而且ping的数据也没有保存。

bat命令哪里错了 为啥一开始不是显示1 而是echo处于打开状态的?

麻烦bat命令高手们,帮我看看,下面这段代码到底哪里有问题,为啥运行的时候,总提示echo 处于关闭状态