Pass array as an argument from c# to batch (not a duplicate)
本问题已经有最佳答案,请猛点这里访问。
所以我尝试将一个数组从我的C代码发送到一个批处理文件,在这个文件上我需要执行一个for-each循环。
我的C代码:
1 2 3 4 5 6 7 8 9 10 11 | string MyBatchFile = {the batch file path} int[] x = {1,2,3}; var process = new System.Diagnostics.Process { StartInfo = { Arguments = String.Format("{0}", x) } }; process.StartInfo.FileName = MyBatchFile; process.Start(); |
我的批处理文件:
1 2 3 4 5 6 | set array=%1 FOR %%x IN %array% DO ( echo %%x /*Some more lines here*/ ) pause |
这似乎不起作用,如果我打印
注意:主要目的不是打印数组,而是对数组中的每个值执行一些操作。印刷只是一个例子。
编辑:我终于做到了,找到了一些解决方法:)我不会公布我是怎么做的,因为它是"复制品",不是吗?干杯。
您需要结合使用字符串、引用命令行参数和参数清理。
为了构建参数字符串,需要将整型数组
1 2 3 4 |
现在,
然后,在批处理文件中,需要清除参数,然后可以循环它:
1 2 3 4 5 6 7 8 9 10 11 | @ECHO OFF REM Copy the argument into a variable SET array=%1 REM Trim the quotes from the variable SET array=%array:"=% REM Loop over each space-separated number in the array FOR %%A IN (%array%) DO ( ECHO %%A ) |
参考文献:
- 将整数数组转换为逗号分隔的字符串
- 从批处理文件中的变量中删除双引号会导致命令环境出现问题。
- 如何在Windows批处理文件中循环?
你也可以用逗号分隔的方式,看看如何批量循环使用逗号分隔的字符串?.