據我所知,如果你用""來呼應,可以顯示一些特殊字符。我只是在代碼上卡住了,試圖找出我可以在什么地方進行修改以使其發揮作用。我看不出問題所在。代碼來自這里。
我需要的是一個特殊的代碼,它可以為我做寫影片,然后退出。就像這樣。我從那里復制了代碼,修改后可以用typewriter.bat "text" "charsnum-1"呼叫,比如typewriter "Hello" 4。雖然我不真正了解批處理混合體,而且,即使知道如何解釋代碼,我也看不出符號卡在哪里。
為了重現我的問題:typewriter.bat "Hello? 5
代碼:
@if (@CodeSection == @Batch) @then
@echo off
setlocal
顏色 70
設定charnuu=%2
呼叫 :split chars %1
:開始
for %i in (%chars%) do call :type "%%~i" 。
退出 /b
得到開始
:split <var_to_set> <str>
設定本地的enabledelayedexpansion
設定 "行="
設定 "str=%~2"
for /L %%I in (0,1,%charnuu%) do set line=!line! "!str:~%%I,1!"
endlocal & 設定"%~1=%line%"
goto :EOF
:type <char>
cscript /nologo /e:JScript "%~f0" "%~1"
goto :EOF
終端
//結束批處理/開始JScript嵌合體
函式 pause() { WSH.Sleep(Math.random() * 50 50); }
函式 odds(num) { return ! (Math.round(Math.random() * num) % num) }
pause();
如果(odds(300)) WSH.Echo('')。
如果(!odds(400)) WSH.StdOut.Write(WSH.Arguments(0))。
這段代碼沒有顯示常見的符號,甚至沒有顯示基本的符號,比如?。也許我太累了,看不出來。請幫助我。
uj5u.com熱心網友回復:
問號不能被常規的for回圈處理,但你可以通過不使用回圈處理單個字母,而只是將整個字串作為一個整體進行迭代來解決這個問題:
@echo off
因為這是一個概念驗證,所以只需對字串的長度進行尊重系統的處理。
但請記住,字串的指數從0開始。
設定 "string=%~1"
設定 "string_length=%~2"
REM生成一個退格符供以后使用
for /f %%A in ('"prompt $H&for %%B in (1) do rem"') do set "BS=%%A"
REM的setlocal在這里,而不是像通常那樣在頂部,以處理
REM 含有感嘆號的字串。
在列印子串之前,有一個句號和一個退格符。
如果當前字符恰好是空格(否則
否則就不會被列印出來)。)
REM的超時/t 0是因為超時是一個外部命令,從技術上來說
REM需要幾毫秒的時間來啟動,所以將等待時間設定為0
REM秒實際上會產生一個比1秒更短的暫停。
setlocal enabledelayedexpansion
for /L %%A in (0,1,%string_length%) do (
<nul set /p "=.%BS%!string:~%%A,1!"
>nul timeout /t 0
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/315749.html
標籤:
上一篇:用&批量創建檔案
