batch-file - 通过 STRING NAME 批量检查空变量
问题描述
是否有一些从字符串批量重定向到变量的重定向?
主命令
@setlocal enableextensions Enabledelayedexpansion
@echo off
set log=C:\log\test.log
set my_var=foo
set vars_to_check=my_var
call check_empty.cmd "%vars_to_check%" || goto :error_handler
check_empty.cmd
if "%1" == "" (
echo no param. >> !log!
exit /b 2
)
if not defined %1 (
echo the variable %1 is empty. >> !log!
exit /b 1
)
echo %1 has value %%1%%. >> !log!
exit /b 0
现在我确实运行了 main.cmd:我确实期望 echo 'my_var has value foo.'。但是,我只是得到“变量“%1”为空。请注意 %1 周围的引号。因此,我从 main.cmd 中的调用中删除了引号,它几乎可以正常工作,因为我收到消息:'my_var has value %my_var%.'。至少我到达了实现定义变量的地步。
避免引号的问题是下一步将是:传递多个变量并循环检查...
set vars_to_check=my_var some_other_var something_else
现在我需要引号,所以我可以传递变量......
解决方案
check_emtpy.cmd
:
@echo off
if "%~1" == "" echo no param. & exit /b 2
if not defined %~1 echo the variable %1 is empty.& exit /b 1
call echo %1 has value %%%~1%% & exit /b 0
- 如果参数(变量名)为空,则返回(错误级别 2)
- 如果未定义变量,则返回(错误级别 1)
- 返回(错误级别 0)
如果您不需要该消息,则最后一行是可选的。如果你能保证总是有一个参数(但谁能保证......),第一个if
也是可选的。
推荐阅读
- node.js - 使用 AXIOS (Node.js) 在请求之间保留 cookie
- xml - 谷歌表 importxml 来抓取 seekalpha 新闻
- python - Python循环遍历列表级别
- python - 在 Pandas DataFrame 中具有唯一的索引值
- algorithm - 如何在毕达哥拉斯表n * n中找到num k的重复次数?
- c# - 如何将复选框值设置为从 mvc 中的控制器检查
- google-cloud-platform - 在 Google Cloud 的虚拟机中启用虚拟化功能
- embedded - TwinCAT 3 控制台消息显示
- java - 数组中最大数的总和
- performance-testing - MicroFocus Load Runner 中是否有后处理器或类似的东西,就像在 JMeter 中一样?