Re h2o:
如果有多个疑问,建议在搜索没有类似主题的情况下,就每个疑问单独发一贴,这样便于搜索.
关于顶楼的问题:
@echo off
setlocal ENABLEDELAYEDEXPANSION
set filename=mp3.vbs
for /f "delims=: tokens=1,*" %%i in ('findstr /n . %filename%') do set %%i=%%j & set num=%%i
for /l %%x in (%num%,-1,1) do for /f "delims=" %%y in ("!%%x! ") do echo.%%y
pause
注意:
1.此方法将受cmd变量个数的局限,如果处理太大的文件可能出现错误.如果用for "skip..." (findstr /n .)的方法则效率会非常低下.所以如果文件比较大的话可以尝试用vbs来实现.
2.为了代码的简洁性以及不忽略空白行,在每一行末尾会多一个空格出来.如果删除最后那个for语句中的("!%%x! ")中的空格,则不会在每行末尾加空格,同时也会自动删除文件中的空白行。
3.仿佛记得论坛就这个主题有过类似讨论,建议搜索一下。
关于生成随机字符的问题:
@echo off
setlocal ENABLEDELAYEDEXPANSION
set str=0123456789abcdef
:start
set /a num2+=1
set /a num1=%random:~-1%
set str=!str:~%num1%!!str:~0,%num1%!
set str=%str: =%
set var=%var%%str:~0,1%
if %num2% gtr 111 goto next
goto :start
:next
echo %var%
pause
为了便于理解,采用goto循环的结构.