本帖最后由 tiandyoin 于 2024-9-7 09:49 编辑
- @echo off
- set /p n=要跳过多少个参数:
- echo 初始="1" 2 3 "C:\% a % \%%b%% !c!\h!!e!!llo" 6 7 ""D:\Mother **\wet pussy"" a b c e f g h i j
- call :get_tails list %n% "1" 2 3 "C:\% a % \%%b%% !c!\h!!e!!llo" 6 7 ""D:\Mother **\wet pussy"" a b c e f g h i j
- set list
- @goto :EOF
-
- :get_tails
- @echo off
- set %~1=
- set "count=%~2"
- :LOOP
- set/a count-=1
- set t=%3
- if not defined t goto :LOOP_OUT
- if %count% LSS 0 call set %~1=%%%~1%% %3
- shift /3
- goto :LOOP
- :LOOP_OUT
- set %~1
- call echo list2=%%%~1%%
- @goto :EOF
复制代码 使用 call set 的缺点是无法阻止 %% 求值
使用延迟变量的缺点是
无法阻止 !! 求值,
要全局忍受感叹号恐惧的支配,
即使使用 Endlocal & set ... 拿出来,还是摆脱不了 %% 变量求值的坑 |