0

これがこのバッチIM作成です

@echo off  
title TXTanimation  
set dir101=C:\USers\Jake\Desktop\file.bat  
goto menu  
echo Lets make a text animation  
pause  
set /p dir101=where will the .bat be saved:  
echo @ECHO OFF > %dir101%  
:menu  
echo 0=Edit important information  
echo 1=Display .txt  
echo 2=Play sound  
echo 3=Close sound player  
echo 4=Add nessicary wait between .txt  
echo 5=Label point  
echo 6=Edit variable  
echo 7=Goto point  
echo 8=Create IF sentence  
echo 9=End it  
Set /p choose=which one:  

If '%choose%'=='0' (  
SEt /p title=What is the title  
:LOL101  
set /p color=what color do you want (type test to experiment with the colors)  
If '%color%'=='test' goto tester  
goto model  
:tester  
SEt /p test=Please give hexadecimal number type exit to leave:  
if '%test%'=='exit' goto LOL101  
color %test%  
goto tester  
:model 
echo title %title% >> %dir101%  
echo color %color% >> %dir101%  
)  

If '%choose%'=='1' (  
set /p dir=what is the dir of your .txt:  
)  
If '%choose%'=='1' (  
echo cls >> %dir101%  
echo type %dir% >> %dir101%  
)  
If '%choose%'=='4' (  
SEt /p thyme=How much milliseconds 250 is usual:  
echo ping 192.168.1.1 -n 1 -w %thyme% >> %dir101%  
)  
goto menu  
If '%choose%'=='9' (  
echo Thanks for making  
pause  
)

.batファイルに.txtアニメーションを作成するために使用されます。私はそれを終えることができますが、私は最初に問題を修正する必要があります。

問題は echo title %title% >> %dir101% echo color %color% >> %dir101% 、括弧内にあるにもかかわらず、それが行われることです

4

1 に答える 1

1

あなたはあなたが抱えている問題についてあまり明確ではありません。ただし、コードに一般的な問題があります。

環境変数を設定してから、かっこで囲まれた同じコードブロック内で、即時展開を使用して値にアクセスしようとしています。ブロックが解析されるときに展開が発生し、何かが実行される前にブロック全体が1回のパスで解析されるため、これは機能しません。したがって、値がブロック内に設定される前に存在していた値を取得することになります。

SETLOCAL EnableDelayedExpansion解決策は、スクリプトの上部を使用して遅延拡張を有効にすることです。!var!次に、通常の展開()の代わりに遅延展開()を使用%var%して、解析時ではなく実行時に変数の値を取得します。

詳細については、コマンドプロンプトで入力し、 「最後に、遅延環境変数拡張のサポートが追加されました...」HELP SETで始まる段落から読み始めてください。

于 2012-04-13T02:03:26.883 に答える