根据FOR / F循环中的标记数动态创建变量

时间:2015-07-27 17:47:11

标签: batch-file

我有一个文件,我希望从中获取信息。

  

LOCAL DEPT,FIRST-FLOOR-DEPT.bat

我已经帮助使用逗号作为分隔符来使用FOR / F循环分隔我需要的值,但是从第二部分开始,每个由破折号( - )分隔的单词我想将它们分配给变量并且从所有那些动态创建的变量使得1将统一它们。这听起来有点奇怪,我可以更好地解释。看看我到目前为止测试和研究的代码......

Setlocal EnableDelayedExpansion
SET c=0
SET getname=%~n0
for /f "tokens=2 delims=," %%F IN ("%getname%") DO (
    for /f "tokens=1* delims=- " %%G IN ("%%F") DO (
        SET /a c+=1
        SET step!c!=%%G
    )
)
for /L %%G in (!c!, -1, 1) do SET th=!step%%G!\
@echo %th%

我期待%th%回复像FIRST \ FLOOR \ DEPT这样的内容,但我只获得第一个令牌,如FIRST \

重要提示:我有几个这样的文件,其中名称的数量有时是NAME,A-A其他时间是NAME,A-A-A或更多,所以它不能是静态的:(以任何方式

提前致谢

3 个答案:

答案 0 :(得分:2)

使用字符串替换:

Setlocal EnableDelayedExpansion
SET getname=%~n0
for /f "tokens=2 delims=," %%F IN ("%getname%") DO (
    set th=%%F
    rem Replace - with \
    set th=!th:-=\!
    rem trim the first space
    set th=!th:~1!
)
echo %th%

答案 1 :(得分:0)

您应该将%random%用于动态数字。如:

set /a guns=%random%
echo you've %guns% guns! congratulations!

答案 2 :(得分:-1)

for /l %%I in (1,1,10) do set randnum=%%i