【发布时间】:2021-10-21 05:56:57
【问题描述】:
我这里有两个批处理文件,test.bat 和 len.bat。
len.bat 是一个函数,它接收来自test.bat 的输入,对其进行处理,然后将结果值返回给test.bat。
test.bat
@echo off
setlocal EnableDelayedExpansion
call len tesla
echo !result!
pause
len.bat
@echo off
setlocal EnableDelayedExpansion
set "string=%~1"
for /l %%a in (0,1,10000) do if "!string:~%%a,1!" == "" (
set result=%%a
exit /b
)
当我打开test.bat 时,我希望它会打印一个值。相反,它说 Echo 已关闭。
将变量从len.bat 传递到test.bat 似乎存在问题。
【问题讨论】:
-
我建议你阅读
setlocal的目的。所以从len.bat中删除delayedexpansion -
我假设您知道您的长度逻辑非常低效。对于初学者,批处理文件中的字符串NEVER 可以是 10,000 字节长。如果您搜索该站点,您会发现完成此任务的代码效率更高。
标签: windows batch-file cmd call command-prompt