- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试设置 SETLOCAL 内部、FOR 循环内部和 IF 语句内部的变量的值。然而,它似乎永远不会奏效。我尝试在 ENDLOCAL 语句中使用 SET 语句,但这似乎并没有实际设置任何内容。之后回显变量仅回显原始设置值 0。
@ECHO off
SET pathsource=K:
SET sourcefile=0
SET counter=0
SETLOCAL enableextensions enabledelayedexpansion
REM Get the newest pptx file in the specified directory. Get the filename and last modified timestamp
FOR /f "tokens=1-3,5*" %%a IN ('dir ^"%pathsource%\*.pptx^" /a-d-h-s /o-d /tw ^| find /i ^".pptx^"') DO (
REM echo !counter!
REM only get the first row by using a counter
IF !counter! EQU 0 (
REM variables are: a-date, b-time, c-am/pm, d&e-filename
ECHO %%a %%b %%c %%d %%e
SET sourcefile=%%d %%e
)
SET /A counter+=1
)
ENDLOCAL & (
SET "sourcefile=%sourcefile%"
)
ECHO %sourcefile%
REM do other stuff with the %sourcefile% variable after this
最佳答案
由于您在 Set/End Local 块中分配值,因此在 ENDLOCAL
上所做的任何更改都会被丢弃一次。命令已到达。
只需移动您的 SETLOCAL
和 ENDLOCAL
命令分别发送到脚本的顶部和底部。这将使整个脚本中的所有分配始终保持不变。
此外,您实际上并不需要计数器变量。处理完第一个文件后,您可以直接跳出循环:
@ECHO off
REM delayed expansion not needed for the portion shown
SETLOCAL enableextensions
SET pathsource=K:
SET sourcefile=0
REM Get the newest pptx file in the specified directory. Get the filename and last modified timestamp
FOR /f "tokens=1-3,5*" %%a IN ('dir ^"%pathsource%\*.pptx^" /a-d-h-s /o-d /tw ^| find /i ^".pptx^"') DO (
REM variables are: a-date, b-time, c-am/pm, d&e-filename
ECHO %%a %%b %%c %%d %%e
SET sourcefile=%%d %%e
REM We only care about the first row
GOTO EndLoop
)
:EndLoop
ECHO %sourcefile%
REM do other stuff with the %sourcefile% variable after this
ENDLOCAL
FOR
使用 native 的语法
DIR
和
FOR
变量命令:
@ECHO off
REM delayed expansion not needed for the portion shown
SETLOCAL enableextensions
SET pathsource=K:
SET sourcefile=0
REM Get the newest pptx file in the specified directory. Get the filename and last modified timestamp
CD "%pathsource%\"
FOR /f "usebackq tokens=* delims=" %%a IN (`dir "%pathsource%\*.pptx" /a-d-h-s /o-d /tw /b`) DO (
REM Use For loop variables.
REM Print the date/time and file name.
ECHO %%~ta %%~a
SET sourcefile=%%~a
REM We only care about the first row
GOTO EndLoop
)
:EndLoop
ECHO %sourcefile%
REM do other stuff with the %sourcefile% variable after this
ENDLOCAL
关于batch-file - 在批处理文件中使用 endlocal 设置变量,但这些变量在 setlocal/endlocal block 之外永远不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28220141/
我正在尝试设置 SETLOCAL 内部、FOR 循环内部和 IF 语句内部的变量的值。然而,它似乎永远不会奏效。我尝试在 ENDLOCAL 语句中使用 SET 语句,但这似乎并没有实际设置任何内容。之
我在批处理脚本中有以下“功能”: :myfunction setlocal set _variable=%* :: do something with %_variable%
我有一个批处理文件,它通过一系列中间变量计算变量: @echo off setlocal set base=compute directory set pkg=compute sub-director
如何在循环中保留 endlocal 之后的多个变量(具有特定前缀)? 变量在循环声明中可见,但在循环体中不可见。 这是一个使用 echo 而不是变量赋值的示例,以说明变量在 for 主体中不可见。通常
如何在循环中保留 endlocal 之后的多个变量(具有特定前缀)? 变量在循环声明中可见,但在循环体中不可见。 这是一个使用 echo 而不是变量赋值的示例,以说明变量在 for 主体中不可见。通常
目标 将环境变量更改隔离到代码块。 背景 如果我想创建一个批处理脚本来运行需要设置环境变量的命令,我知道我可以这样做: setlocal set MYLANG=EN my-cmd dostuff -o
我有一个文件夹结构,例如C:\Temp\,里面有很多文件夹和文件,每个文件夹里都有一个“callme.bat”。我想创建一个所谓的 main.bat,它在主窗口中一个接一个地调用 callme 文件。
我有一个通过引用批量返回值的函数。 :errorCheck setlocal set "test_command=%~1" set "err_code=%~2" FOR /F "delims=" %%
我有一段代码正在执行 0-100,000 次。有问题的 block 显示如下: FOR /R %%f IN (*.*) DO ( CLS ECHO Del 2.0 ECHO Files D
这里有两个批处理文件:1.bat,setenv.bat 1.bat: 调用setenv.bat 回显%var% setenv.bat: setlocal ENABLEDELAYEDEXPANSION
解析架构后需要更好的错误报告,即 enum MyEnum { Key1, Key2, Key3 } table Test { field1: MyEnum = MyEnum.Key1;
我是一名优秀的程序员,十分优秀!