dos 变量设置

来源:百度知道 编辑:UC知道 时间:2024/07/03 00:17:23
@echo off
SET JSFOLDER=D:\source\
chdir /d %JSFOLDER%
for /r . %%a in (*.css) do (
SET var=%%a
@echo 原路径 %%a
@echo 显示这个路径 %var%
)
pause & exit

为什么这个 @echo 显示这个路径 %var%
的输出结果输空的呢? 请高手指点。
@echo 原路径 %%a 是有输出路径的 D:\source\d.css

@echo off
setlocal enabledelayedexpansion
SET JSFOLDER=D:\source\
chdir /d %JSFOLDER%
for /r . %%a in (*.txt) do ( SET var=%%a&@echo 原路径 %%a&@echo 显示这个路径 !var! )
pause & exit

加上setlocal enabledelayedexpansion
代码:
@echo off
for /l %%i in (1,1,10) do (
set "str=%%i"
echo %str%
)
pause>nul

@echo off&setlocal enabledelayedexpansion
for /l %%i in (1,1,10) do (
set "str=%%i"
echo !str!
)
pause>nul第一段代码只会显示10行“ECHO 处于关闭状态。”,而第二段代码则会正确显示1-10的10行数字。
在两段代码的for循环前str都是没有被定义的,而由于第一段代码没有开启变量延迟,所以str值一直是没有定义,因而显示出了10行报错信息;而第二段代码开启了变量延迟,在for循环中每次赋予str的值被传递下去,因而会正确显示10行数字,但这里的str变量符必须要成!str!这是没有道理可讲的,只要记住就好了。

现在我知道了,刚才没给你解决:

----------------------------------------
@echo off
setlocal enabledelayedexpansion
SET JSFOLDER=D:\source\
chdir /d %JSFOLDER%
for /r . %%a in (*.txt) do ( SE