バッチでlinuxのような端末を作ろうとしています。コードに何が問題なのか分かりません。 文の後にバッチファイルがクラッシュする
Set "word[!i!]=%cmd: ="&Set /A i+=1&Set "word[!i!]=%" echo %word[1]% if "%word[1]%==ls" dir
の後でクラッシュします。
は、ここに私のコードです:
@Echo on
pushd C:\
Set "cmd="
For /F "Delims==" %%A In ('Set word[') Do Set "%%A="
set "UserAccount=%username%"
cls
:Loop
SetLocal EnableDelayedExpansion
Set /P "cmd=%UserAccount%@%UserAccount%~%cd%$ "
If Not Defined cmd EndLocal EnableDelayedExpansion & GoTo Loop
Set "i=1"
Set "word[!i!]=%cmd: ="&Set /A i+=1&Set "word[!i!]=%"
echo %word[1]%
if "%word[1]%==ls" dir
if "%word[1]%==cd" goto cd
if "%word[1]%==cd .." cd..
if "%word[1]%==cd ." cd.
GoTo Loop
:cd
if Not Defined %word[2]% echo %cd% & GoTo Loop
cd %word[2]%
EndLocal EnableDelayedExpansion
goto Loop
K-Popでは、適切な修正のためにスクリプトに間違いがあります。あなたの全体的なアプローチは完全に再考する必要があります。私は人々がcmd.exeバッチスクリプトを使ってコンソールセッションのような非cmd.exeを書くことを試みている多くの疑問を見てきました。これは* nixのように振る舞いますが、そうではありません。 _私はそれが合理的で価値のある追求であるとは思わない。 – Compo