2012-04-13 21 views
0

このバッチファイルは、サブメニュー4以外ではうまくいきました。ここで、ping 192.168.1.1 -n 1 -w!thyme!代わりに、エコーのping 192.168.1.1 -n 1 -w!タイム!> NUL%のdir101%バッチファイル> NUL >>%dir%エラー

@echo off & SETLOCAL EnableDelayedExpansion 
title TXTanimation 
set dir101=C:\USers\Jake\Desktop\file.bat 
goto jakeinc 
echo Lets make a text animation 
pause 
set /p dir101=where will the .bat be saved: 
:jakeinc 
echo @ECHO OFF > %dir101% 
echo: >> %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% 
goto menu 
) 

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

葉のNULにこれは大きなプログラムですが、私のエラーは、実際に小さいです。私はテンプレートを入力し、変数を挿入する可能性がありますか? しかしecho ping 192.168.1.1 -n 1 -w !thyme!>NUL >> %dir101%リダイレクトするために> NULを指定する必要があります

答えて

1

リダイレクトシンボルは、リダイレクトとして解釈される代わりにエコーされるようにエスケープするだけです。

echo ping 192.168.1.1 -n 1 -w !thyme! ^>NUL >>%dir101% 

警告:としてあなたのサブメニュー0作品が書かれていますが、将来的にあなたのために問題が発生します悪い習慣を確立することができます。一般的に、カッコで囲まれたコードブロックの中にラベルを入れないでください。どのように問題を引き起こす可能性があるかの例については、(Windows batch) Goto within if block behaves very strangelyを読んでください。

1

これらのコマンドを別のバッチにエコーしようとすると、正しくエスケープする必要があります。バッチ内^エスケープほとんどの機能を

ping 192.168.1.1 -n 1 -w *value_of_thyme_variable* > NUL 

echo ping 192.168.1.1 -n 1 -w ^!thyme^!^>NUL >> %dir101% 

あなた%dir101%バッチにこれを書き込む:これを試してみてください。 FYI:で動作しません%可変値です。 %のような変数値を%test%のようにエスケープする必要がある場合は、%%test%%のようにすることができますが、上記の可変値の場合は!の値で動作します。

+0

私はジェイクが '^!タイム 'を避けたいとは思わない。とにかくあなたの試みはうまくいかず、引用符で囲まれていない '^!thyme ^! 'は依然として展開されています。引用符で囲まれていない遅延展開は、 '^^!thyme ^^! 'としてエスケープする必要があります。 – dbenham

関連する問題