Batch file 批处理文件:如何迭代符号列表?

Batch file 批处理文件:如何迭代符号列表?,batch-file,Batch File,我正在尝试运行以下代码行: for %%i in (+ - * /) do echo %%i 但是它没有打印符号,而是在我的电脑上打印了一个奇怪的巨大文件列表 但是,如果我将符号列表替换为hi之类的单词,它将按预期工作 出了什么问题,如何遍历这些符号?尝试/f。示例shell脚本批处理文件: @echo off setlocal enableextensions for /f "tokens=1,2,3,4" %%i in ('echo + - * /') do ( echo %%i

我正在尝试运行以下代码行:

for %%i in (+ - * /) do echo %%i
但是它没有打印符号,而是在我的电脑上打印了一个奇怪的巨大文件列表

但是,如果我将符号列表替换为hi之类的单词,它将按预期工作

出了什么问题,如何遍历这些符号?

尝试/f。示例shell脚本批处理文件:

@echo off
setlocal enableextensions
for /f "tokens=1,2,3,4" %%i in ('echo + - * /') do (
  echo %%i
  echo %%j
  echo %%k
  echo %%l
)
endlocal
见/?了解更多信息

我建议改为使用PowerShell:

"+-*/".ToCharArray()

替代上述答案

for /f "tokens=*" %%i in ('echo + - * /') do @echo %%i

Chee,G

这将回显字符串中的字符:

@echo off
setlocal enabledelayedexpansion
set "string=+-*/"
set c=-1
:loop
set /a c+=1
if not "!string:~%c%,1!"=="" echo !string:~%c%,1!&goto :loop
pause

所以这一行的作用是遍历文本“echo+-*/”中的每个单词,并对其进行回显,对吗?如果是这样,为什么要在文本开头回显?语法-对于'command'DO command[command parameters]中的/F[options]%变量,请参见FOR/?详细解释请参见cmd。当for循环中的集合被单引号包围时,这意味着它将被解释为命令。所以,这里for循环将遍历'echo+-*/'的输出,这实际上是+-*/所以为什么不在+-*/do@echo%%i中只做for/f标记=*%%i?这可能是因为星号*符号是为通配符搜索保留的,命令提示符不喜欢它。我试过你说的,只有我这样做了:for/f令牌=*%%I in+-*/do echo%%I。它是有效的。不应该吗?我试过你说的,只是我这样做了:for/f代币=*%%I in+-*/do echo%%I。它是有效的。如果它不起作用吗?请参阅更新的答案,了解如何在单独的一行中回显每个选项。另外,我建议使用PowerShell而不是cmd.exe shell脚本批处理。