我试图翻译如下格式的输入:abcd12-34defg并将其翻译成:ab-cd-12-34-de-fg 并在同一批次中使用固定/翻译输出作为变量
的下一个命令我的代码:
@echo off
setlocal EnableDelayedExpansion
set /p macID="please enter mac id:"
call :print_token 0 2 -
call :print_token 2 2 -
call :print_token 4 2 -
call :print_token 7 2 -
call :print_token 9 2 -
call :print_token 11 2
goto :eof
:print_token
echo | set /p dummyVar=!macID:~%1,%2!%3
exit /b 0
当前输出:
please enter mac id: abcd12-34defg
abcd12-34defg
目标:
please enter mac id: abcd12-34defg
ab-cd-12-34-de-fg
....any_future_cmd_command "%my_new_mac_id_from_2nd_line%"
(这应该保留"缓存"在下一批命令的批处理中,例如:)
netsh dhcp server \ myserver scope myscope |找/我"%my_new_mac_id_from_2nd_line%"
耐心等待
答案 0 :(得分:1)
要收集变量中的所有部分,您可以稍微更改:print_token
函数。
:print_token
set "MAC=!MAC!!macID:~%1,%2!%3"
exit /b
在第一次调用函数之前使用set "MAC="
清除它。
答案 1 :(得分:1)
这是你如何做到的......
@echo off
setlocal EnableDelayedExpansion
set /p macID="please enter mac id:"
set finalMacID=
call :get_token token %macID% 0 2 -
set finalMacID=%finalMacID%%token%
call :get_token token %macID% 2 2 -
set finalMacID=%finalMacID%%token%
call :get_token token %macID% 4 2 -
set finalMacID=%finalMacID%%token%
call :get_token token %macID% 7 2 -
set finalMacID=%finalMacID%%token%
call :get_token token %macID% 9 2 -
set finalMacID=%finalMacID%%token%
call :get_token token %macID% 11 2
set finalMacID=%finalMacID%%token%
echo %finalMacID%
goto :eof
:get_token
set fullString=%2
set %1=!fullString:~%3,%4!%5
exit /b 0
正如我在您之前的帖子中告诉您的那样,如果您决定清除用户提供的macID
,您可以完成更清晰的解决方案,因为您可以将所有call :add_token_to_variable.... set finalMacID=%finalMacID%%token%
语句放在一个for循环,使其更紧凑,更不容易出错。
希望它有所帮助。