首先,我讀到其他人的問題都是類似的,但沒有一個給定的解決方案可行。這也是我的第一批文件之一。背後的想法是,我按[D]將塊X向右移動,[A]向左移動塊。這是腳本。缺少操作員批處理腳本失敗
@echo off
:start
set z=%q%
if "%z%"=="" set z=5
choice /c ad
set x=%errorlevel%
if %x%==a goto a
if %x%==d goto b
:sett
set /a q="%z% %y% 1"
if %q%==1 goto 1
if %q%==2 goto 2
if %q%==3 goto 3
if %q%==4 goto 4
if %q%==5 goto 5
if %q%==6 goto 6
if %q%==7 goto 7
if %q%==8 goto 8
if %q%==9 goto 9
if %q%==10 set q=1 && goto 1
pause
:a
set y="-"
goto sett
:b
set y="+"
goto sett
:1
echo.X
goto start
:2
echo..X
goto start
:3
echo...X
goto start
:4
echo....X
goto start
:5
echo.....X
goto start
:6
echo......X
goto start
:7
echo.......X
goto start
:8
echo........X
goto start
:9
echo.........X
goto start
我認爲(從其他人的帖子聚集),這個問題是無論是在
set /a q="%z% %y% 1"
或
set y="-"
或
set y="+"
我知道有可能是更簡單的方法來完成這一點,但這是我學習的方式。困難的方式。
感謝你的幫助,但它仍然是行不通的。發生同樣的確切錯誤。 – coltonon
您的下一個問題是您將'x'設置爲'%errorlevel%',因此它會是1或2.然後您會對'a'和'd'進行測試,因此兩個測試都會失敗。批量只是繼續到下一行,並且由於'y'尚未建立,所以看到'set/a q = 5 1'並報告操作員缺失。如果您要將'@echo off'更改爲'echo on'(或簡單地'rem'出來),那麼您會一步步看到操作。一旦你解決了這個問題,你會遇到'q'從1遞減的問題,因爲沒有'q == 0'的測試將它返回到9。 – Magoo
有一點要謹慎。你的代碼中有一個失敗失敗的情況,現在是最好的排序,而不是稍後。 '&'和'&&'有很大的區別。 '&'意味着'做到這一點,然後做'。 '&&'意味着'做到這一點,如果成功了,那就做'。 'set'總是會成功,所以在這種情況下,它們是等價的,但'並非總是如此。在使用該語法編寫批處理近20年的時間裏,我從來沒有使用'&&'或'||' - 主要是因爲我不記得有什麼不同。 – Magoo