batch-file - for循环内批处理脚本中的子字符串计算
问题描述
我试图在for
批处理脚本中提取循环中的子字符串,但我遗漏了一些东西,因为它将在循环内延迟字符串。
下面是代码:请帮助如何做到这一点:
@echo off
setlocal EnableExtensions EnableDelayedExpansion
FOR /F "tokens=1* delims=" %%A IN ('dir /b /a-d') DO (
echo %%A
set directory=%%A
:: am calculating length here based on some logic, lets assume it as 2
set length=2
set myvar = !directory:~0:length!
echo !myvar!
)
endlocal
pause
立即输出
1.txt
ECHO is off.
2.txt
ECHO is off.
demo.cmd
ECHO is off.
Press any key to continue . . .
预期输出:
1.txt
1.
2.txt
2.
demo.cmd
de.
Press any key to continue . . .
解决方案
如上面@Mofi 所指出的,留下上述脚本中的所有问题。这个问题可以通过使用以下计算子字符串来解决
对于 %%G In (!length!) 请设置 "myvar=!directory:~0,%%G!"
最终脚本:
@echo off
setlocal EnableExtensions EnableDelayedExpansion
FOR /F "tokens=1* delims=" %%A IN ('dir /b /a-d') DO (
echo %%A
set directory=%%A
set length=2
set myvar = !directory:~0:length!
For %%G In (!length!) Do Set "myvar=!directory:~0,%%G!"
echo !myvar!
)
endlocal
pause
推荐阅读
- dhall - 如何在 dhall 中键入异构列表?
- c++ - 调用从程序集中返回 std::string 的 C++ 函数
- javascript - 来自 getter 的 React Native 返回函数
- google-cloud-datastore - Google Cloud Datastore 日期字段自动转换
- url - vscode:// url 方案可以使用哪些选项?
- python - 如何将列表列表中的字符串元组转换为列表列表?
- javascript - 如何在将UTC转换为时区时考虑夏令时
- ios - 如何在 Flutter 应用程序中通过 Firebase 电话身份验证在 iOS 上使用 reCAPTCHA?
- webpack - 加载字体时 Webpack 5 错误“未捕获的错误:模块解析失败:意外字符'@'”
- java - 允许用户从 Java 中的二进制文件编辑学生信息