cmd格式用户输入并用于下一个命令

时间:2016-08-31 13:51:45

标签: batch-file cmd

我试图翻译如下格式的输入: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%"

耐心等待

2 个答案:

答案 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循环,使其更紧凑,更不容易出错。

希望它有所帮助。