【发布时间】:2018-12-03 00:18:13
【问题描述】:
考虑以下两个循环:
for /f "tokens=*" %%a in ('dir /b %TEMP%') do (
echo %%a
)
和
for /f "delims=" %%a in ('dir /b %TEMP%') do (
echo %%a
)
如果我想要的结果是为变量%%a 提供正在评估的整行的内容,那么选项tokens=* 和delims= 在功能上是否等效?
在给定特定输入的情况下,我可能会在其中一个或另一个得到不同的输出?
我想知道这两个选项是否应该始终结合使用以保证覆盖所有潜在情况,或者如果同时指定这两个选项是多余的。
【问题讨论】:
-
好吧,如果我们发布了 OP 没有要求的荒谬想法,您不妨学习 Python 或 C。
-
命名一种没有任何怪癖的编程语言。
-
"delims="表示“整行”。"tokens=*"表示“所有标记”,但在这种情况下,第一个标记之前的空格不包含,因此当行有前导空格时,结果会有所不同。 -
@Bill_Stewart:如果您在批处理文件问题中发布未经请求的 PowerShell 评论(对 Batch 有一些批评),那么我有权对 PowerShell 发表反批评。我邀请您阅读 this article 末尾的 cmets,这些内容由 Batch-file 用户撰写,讲述他们在 PowerShell 上的体验,或者阅读由经验丰富的程序员撰写的有趣文章 What I Hate About PowerShell。
-
您可以阅读我对批处理文件问题here 的非请求 PS 解决方案的观点;例如:“是的:PowerShell 比批处理文件更多(在这里放任何你想要的好形容词),但这并不意味着它在所有情况下都是正确的选择,特别是当要解决的问题很简单时,比如这个”.
标签: windows batch-file for-loop cmd