2016-04-21 71 views
0

文件名:1.BAT這個程序爲什麼自動停止在18?

@echo off 
cls 
set /a a=%~n0+1 
set /a b=%~n0*2 
For /l %%c in (%a%,1,%b%) do type %~nx0 > %%c.bat 
cls 
echo Enter password: 
set /p "Pass=>" 
If not %pass%==tamaulipas_living_rock_cactus (
goto fail 
) 
exit /b 

:fail 
echo WRONG! 
pause 
For /f %%d in ('dir /a /b /on') do set f=%%d 
call %f% 

這個程序只是應該讓一堆裏面它在任何文件夾中的自我複製的,每個人得到密碼錯誤的時間增加一倍。測試時,程序進入16,然後停止。如果它在32或16點停下來,這會有一定的意義,因爲它是2的冪,並且可能是某種程度上限制了它,但爲什麼18這樣一個隨機數是停止點?而奇怪的是,運行18.bat做什麼它應該,並與36相同,72,等等,說的部分:

For /f %%d in ('dir /a /b /on') do set f=%%d 
call %f% 

應該運行18.bat,而是它只是刷新密碼提示,而不會創建任何新文件。

我想和我的朋友(電腦壞了)混在一起,並最終告訴他密碼在512或其他東西。

另外,我試圖消除密碼部分與

@echo off 
cls 
If %~n0==512 (
Exit /b 
) 
set /a a=%~n0+1 
set /a b=%~n0*2 
For /l %%c in (%a%,1,%b%) do type %~nx0 > %%c.bat 
For /f %%d in ('dir /a /b /on') do set f=%%d 
call %f% 

替換它,但這個人有相同的怪異結果

+0

'設定'f =結束%%'?你的意思是'set f = %% d'? – Stephan

+0

@Stephan我認爲這也許是我搞砸的地方 –

回答

1

通過改變:

If %~n0==512 (
Exit /b 
) 

到:

If %~n0==8 (
Exit /b 
) 

它工作正常,但不適用於:

If %~n0==16 (
Exit /b 
) 

然後我意識到程序查找他們的名字排序,第一個數字是處理第一位的,所以程序會重複9.bat一遍又一遍,這就是爲什麼它在18

按日期(我原來在恐懼的計算機不是精確到納秒的沒做)排序固定的問題