批处理能写带参数的命令行程序吗?

 我来答
12d1a2235w652d
2014-07-28 · TA获得超过385个赞
知道小有建树答主
回答量:391
采纳率:80%
帮助的人:320万
展开全部

能。比如这个:

@echo off
setlocal enabledelayedexpansion
if "%~1" == "/?" goto usage
set d_len=10
set d_StrList=abcdefghijklmnopqrstuvwxyz0123456789
if "%~1" == "" (set len=%d_len%) else (set "len=%~1")
if "%len:-=%" neq "%len%" (
        for /f "tokens=1,2 delims=- " %%a in ("%len%") do (
                set /a min_len = %%a, max_len = %%b
                set /a "len = %random% %% (max_len-min_len+1) + min_len"
        )
)
if "%~2" == "" (
        set StrList=%d_StrList%
) else (
        set "StrList=%~2"
        rem 替换正则
        set StrList=!StrList:\d=0123456789!
        set StrList=!StrList:[0-9]=0123456789!
        set StrList=!StrList:[a-z]=abcdefghijklmnopqrstuvwxyz!
        set StrList=!StrList:[a-zA-Z]=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!
)
call :StrLen "%StrList%"
set _out=
for /l %%n in (1 1 %len%) do (
        set /a pos = !random! %% StrLen
        for %%p in (!pos!) do set _out=!_out!!StrList:~%%p,1!
)
echo,!_out!
exit /b
:StrLen <string>
set "_StrList=%~1"
set StrLen=1
for %%a in (2048 1024 512 256 128 64 32 16) do (
        if "!_StrList:~%%a!" neq "" (
                set /a StrLen += %%a
                set _StrList=!_StrList:~%%a!
        )
)
set _StrList=!_StrList!fedcba9876543210
set /a StrLen += 0x!_StrList:~16,1!
goto :eof
:usage
echo %~nx0 --- 生成随机字符串
echo,
echo 用法: %~n0 [字符个数 ^| 最小字符个数-最大字符个数] [字符串]
echo         [字符个数]        默认值: 10
echo         [字符串]        默认值: abcdefghijklmnopqrstuvwxyz0123456789
echo                         可以使用四个正则: \d [0-9] [a-z] [a-zA-Z]
echo,
echo 示例: %~n0
echo       %~n0 10
echo       %~n0 10-15
echo       %~n0 10 "0123&abc"
echo       %~n0 "" \d@-_

转发自批处理之家。作者:tmplinshi

它可以当成第三方工具来使用。

追问
不错
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式