batch-file - 使用“CALL”命令的问题
问题描述
问题总结
在尝试使用批处理脚本在我的 Windows 计算机中自动执行任务的过程中,我遇到了一个问题,所以基本上在批处理脚本中我有两个过程:main
,一个称为另一个:str_len
。
该:ste_len
过程在从过程中调用时接收两个参数(Rem:从算法的角度来看,第一个被认为是字符串,第二个被认为是整数),:main
它所做的是计算“字符串”的长度,然后将其存储到它的第二个参数,我遇到的问题是我不知道如何使用批处理引用变量,就像在零件中创建某种变量指针:main
然后:str_len
使用命令将此指针发送到零件的方法call
,有点像在 C 编程语言中,我们称之为按地址的段落。
我试过的
length
我尝试使用命令声明变量,set
如果我这样做,那么它的名称没有任何%
将是一个直接指向它的指针,但我的假设是错误的。
另外为了达到我的目标,我尝试使用 call 命令两次,第一次从:main
to:str_len
和第二次 from :str_len
to main 的子例程,它将接收必要的数据并打印它(处理它),我没有的原因不选择这个解决方案主要是因为我正在处理一个更大的问题,需要多个程序来操作 throw (这个问题是关于其中一个程序),并且他们中的大多数需要某种协作(一个程序使用的输出另一个以便能够工作)所以你可能已经猜到第二个解决方案会使我的代码真的模棱两可。
具有两个过程的第二种解决方案:
@echo off
title test
:main
set string=%1
set /A l=0
call :str_len %string%
:return_str_len
echo the string "%string%" is %1 characters long!
goto :eof
goto :eof
:str_len
setlocal enabledelayedexpansion
set str=%1
if "%str%"=="!str:~0,%i%!" (
call return_str_len %i%
endlocal
goto :eof
) else (
set /A i+=1
goto str_len
)
到目前为止我做了什么:
@echo off
title test
:main
set string=%1
set /A l=0
call :str_len %string% length
echo The string "%string%" is %length% characters long!
goto :eof
:str_len
setlocal enabledelayedexpansion
set str=%1
if "%str%"=="!str:~0,%i%!" (
set %2=%i%
endlocal
goto :eof
) else (
set /A i+=1
goto str_len
)
预期和实际结果:
我期望上面的代码输出是这样的:
>test.bat Hello
The String "Hello" is 5 characters long!
但它实际输出的是这样的:
>test.bat
The string "Hello" is characters long!
问题:
1)-有没有办法批量创建指向变量的指针,如果是,那么我如何将它与调用命令结合起来以获得我想要得到的结果?
2)-如果第一个问题的答案是“不”,那么你能告诉我一个解决方法,它会给我一个足够接近我打算使用 Batch 达到的结果。
解决方案
推荐阅读
- kubectl - 在这种情况下如何设置 EXTERNAL-IP?
- python - Querying related model-attributes in django
- python - I do understand what I did, now
- reactjs - 使用 Redux 工具包的常见加载状态 reducer
- python - how to rename column label of a Serie (not index label)
- javascript - getElementById 似乎在表单中失败
- asp.net-core - How can I customize my _Layout [abp] framework, abp.io?
- assembly - 什么时候需要在 Assembly 中指定操作数的大小?
- r - 过滤一列中少于 10 个号码的电话号码 -R
- angular - Angular:将服务从自定义元素传递给子自定义元素