Batch file %*可用于为批处理文件中的列表或数组赋值吗?
Batch file %*可用于为批处理文件中的列表或数组赋值吗?,batch-file,Batch File,%1是第一个命令行参数,%2是第二个命令行参数,依此类推直到%9 %*引用所有参数。有没有办法像下面提到的shell脚本那样将这些值分配给列表 argv=(“$@”)其中,$@引用shell脚本中的所有命令行参数。类似的内容: @echo off setlocal enableDelayedExpansion set arg_number=0 for %%a in (%*) do ( set "args[!arg_number!]=%%a" set /a arg_number=
%1
是第一个命令行参数,%2
是第二个命令行参数,依此类推直到%9
%*
引用所有参数。有没有办法像下面提到的shell脚本那样将这些值分配给列表
argv=(“$@”)
其中,$@
引用shell脚本中的所有命令行参数。类似的内容:
@echo off
setlocal enableDelayedExpansion
set arg_number=0
for %%a in (%*) do (
set "args[!arg_number!]=%%a"
set /a arg_number=arg_number+1
)
echo %args[0]%
echo %args[1]%
echo %args[2]%
这是一个windows组。为什么要发布unix代码。将其发布到Unix。在windows中,我们使用
shift
命令。如果你不能使用Windows,你将如何得到一份工作。@拉面:为了说明手头的任务,使用与Unix的比较是非常有效的。你有什么问题?为什么要浪费Windows员工的时间在其他操作系统上。windows专家怎么知道toy OSs是做什么的呢?因为一个好的系统管理员对这两方面都有足够的常识。谢谢。为什么引号中的args[!arg_number!]=%%a?双引号不是必需的,只是标准做法,以防止在变量值中包含隐藏字符,如空格。@RRR,就像因为空格而在文件名和文件路径周围加引号是最佳做法一样。在SET命令周围加引号也有助于保护变量内容。有两个问题-1)这只适用于没有参数包含*
或?
的情况。2) 如果在赋值周围加引号,则必须使用%%~a
删除参数中的任何现有引号,否则有毒字符可能会被保留为不带引号。批处理文件中的${parameter:+word}(如shell脚本中的${parameter:+word})是否有等效的变量替换方法?