佳淵
Lv 5
佳淵 發問時間: 電腦與網際網路程式設計 · 9 年前

bat裡for和set的用法

@echo off

set use=1234

for /l %%a in (1,1,4) do (

set /a b=%%a-1

set /a us%%a=%use:~%b%,1%

)

echo %us1%%us2%%us3%%us4%

pause

印出來應該是要1234

但我不管怎麼試都不行

哪裡有問題嗎?

已更新項目:

@echo off

setlocal enabledelayedexpansion

:begin

cls

for /l %%a in (1,1,4) do (

call set /a an%%a=%%random%:~-1%%

)

if %an1% equ %an2% goto begin

if %an1% equ %an3% goto begin

if %an1% equ %an4% goto begin

if %an2% equ %an3% goto begin

if %an2% equ %an4% goto begin

if %an3% equ %an4% goto begin

2 個已更新項目:

echo %an1%%an2%%an3%%an4%

pause

我把中間if那段改成

for /l %%b in (1,1,3) do (

for /l %%c in (%%b+1,1,4) do (

if !an%%b! equ !an%%c! goto begin

)

)

改完後會進入無限循環

哪裡有錯誤?

另外哪裡可以學到比較進階的語法寫法?

有好多沒看過的寫法@@

1 個解答

評分
  • Moore
    Lv 5
    9 年前
    最佳解答

    @echo off

    setlocal enabledelayedexpansion

    set use=1234

    for /l %%a in (1,1,4) do (

    set /a b=%%a-1

    call set /a us%%a=%%use:~!b!,1%%

    )

    echo %us1%%us2%%us3%%us4%

    pause

    2012-04-07 01:59:39 補充:

    for /l %%b in (1,1,3) do (

    set /a add=%%b+1

    for /l %%c in (%add%+1,1,4) do (

    if !an%%b! equ !an%%c! goto begin

    )

    )

    因為不接受(%%b+1,1,4)

    要先運算

    大陸網站腳本之家

    裡面的DOS/BAT蠻多資料的

    http://www.jb51.net/list/list_106_1.htm

    2012-04-07 02:30:31 補充:

    for /l %%b in (1,1,3) do (

    set /a add=%%b+1

    for /l %%c in (%add%,1,4) do (

    if !an%%b! equ !an%%c! goto begin

    )

    )

    這樣才是對的

還有問題?馬上發問,尋求解答。