2012-04-13 6 views
0

Ich habe diese Batch-Datei funktioniert es gut, außer für Untermenü 4, wo es ping 192.168.1.1 -n 1 -w! Thymian umgeleitet! zu NUL statt 192.168.1.1 von Echo ping -n 1 -w! Thymian!> NUL% dir101%Batch-Datei> NUL >>% dir% Fehler

@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 
) 

Yeh Es ist ein großes Programm, aber mein Fehler ist wirklich klein. Ich könnte die Vorlage eingeben und die Variable vielleicht einfügen? Aber echo ping 192.168.1.1 -n 1 -w !thyme!>NUL >> %dir101% Ich brauche es zu sagen, die> NUL umgeleitet werden

Antwort

1

Sie müssen einfach das Umleitungssymbol umgehen, damit es statt als Umleitung interpretiert wird.

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

Warnung: Ihr Untermenü 0 Werke geschrieben, aber Sie können eine schlechte Gewohnheit werden Festlegung, die Probleme für Sie in die Zukunft führen wird. Sie sollten im Allgemeinen kein Etikett in einen Codeblock in Klammern setzen. Lesen Sie (Windows batch) Goto within if block behaves very strangely für ein Beispiel, wie dies zu Problemen führen kann, und die ausgewählte Antwort erklärt, warum dies zu Problemen führen kann.

1

Sie müssen diese Befehle ordnungsgemäß entkommen, wenn Sie versuchen, sie in einen anderen Batch zu echo. Versuchen Sie folgendes:

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

, die diese in Ihre %dir101% Batch schreibt:

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

die ^ entkommt die meisten Funktionen im Batch. FYI: diese funktioniert nicht arbeiten auf % Variablenwerte. Wenn Sie einen variablen Wert % wie %test% entkommen müssen, können Sie es wie folgt tun: %%test%%, aber wie Sie sehen können, funktioniert es für die Variable ! oben.

+0

Ich glaube nicht, dass Jake flüchten wollte^^! Thymian ^! '. Und dein Versuch funktioniert sowieso nicht ganz - nicht genannt "^! Thymian ^!" Ist noch erweitert. Die nicht notierte verzögerte Expansion muss als "^^! Thymian ^^!" – dbenham

Verwandte Themen