2

我正在尝试将 .bat 文件转换为 .sh 脚本。有几个参数被传递给脚本,其中之一是哈希表。代码看起来像...

date /T
time /T

FOR /F "tokens=1-11" %%A IN (%4) DO (
   set args1=%%A %%B %%C %%D %%E %%F %%G %%H %%I %%J %%K
)
FOR /F "tokens=12" %%A IN ("%4") DO (
   set args2=%%A
)
FOR /F "tokens=12*" %%A IN (%4) DO (
   set dummy=%%A
   set args3=%%B
)

我不确定这里发生了什么,或者如何处理它?有什么建议么?或者网上有好的参考网页我可以看看吗?

4

1 回答 1

2

这是一个很好的参考页面:http ://technet.microsoft.com/en-us/library/bb490909.aspx

分解

第一个循环将输入视为文件名集。

  • 这将前 11 个空格分隔的项目存储在变量 中args1

第二个循环将输入视为文字字符串。

  • 这仅将 12 个空格分隔的项目存储在变量 中args2

最后一个循环将输入视为文件名集。

  • 这是在变量中的第 12 项之后存储所有剩余的以空格分隔的项args3

例子

我建议echo在每个循环之后添加命令,这样您就可以看到解析后的值是什么样子的。

FOR /F "tokens=1-11" %%A IN (%4) DO (
   set args1=%%A %%B %%C %%D %%E %%F %%G %%H %%I %%J %%K
)
echo %args1%
FOR /F "tokens=12" %%A IN ("%4") DO (
    set args2=%%A
)
echo %args2%
FOR /F "tokens=12,*" %%A IN (%4) DO (
   set args3=%%B
)
echo %args3%
于 2013-07-26T22:53:41.127 回答