2017-11-03 12 views
0

バッチファイルでメッセンジャーを作成していますが、デフォルトのカラー設定を保存しようとしています。前に他の設定を保存していて問題はありませんでしたが、今回はファイルを作成しますが空白にします。ここでWindowsバッチファイルコマンドはファイルを作成しますが、ファイルは作成しません。

は一例です:

echo Enter the colour you want... 
set /p defaultcolor= 
if "%defaultcolor%" == "default" @echo 7> "\\user-computer\users\user\documents\codes+stuff\messenger\userdata\%username%\default colour.dll" 
if "%defaultcolor%" == "blue" @echo 1> "\\user-computer\users\user\documents\codes+stuff\messenger\userdata\%username%\default colour.dll" 
if "%defaultcolor%" == "green" @echo 2> "\\user-computer\users\user\documents\codes+stuff\messenger\userdata\%username%\default colour.dll" 
if "%defaultcolor%" == "aqua" @echo 3> "\\user-computer\users\user\documents\codes+stuff\messenger\userdata\%username%\default colour.dll" 

誰もが、私はそれを大幅に感謝します、問題を見つけることができます。

+0

if文も正常に動作することに注意してください。 –

+0

申し訳ありません私はWindowsのコマンドラインを使用しています。 –

+0

あなたは、通常はプログラムの設定が含まれているINIファイルを思いついたと思います。 DLLは基本的に実行可能ファイルです。 – Squashman

答えて

2

番号とリダイレクト記号の間にスペースが必要です。

@ECHO 2> file 

@ECHO 2 > file 

書き込み にファイルとして解釈さファイルにECHOのSTDERR出力をリダイレクト

として解釈さ

echo Enter the colour you want... 
set /p defaultcolor= 
if "%defaultcolor%" == "default" @echo ^7> "\\user-computer\users\user\documents\codes+stuff\messenger\userdata\%username%\default colour.dll" 
if "%defaultcolor%" == "blue" @echo ^1> "\\user-computer\users\user\documents\codes+stuff\messenger\userdata\%username%\default colour.dll" 
if "%defaultcolor%" == "green" @echo ^2> "\\user-computer\users\user\documents\codes+stuff\messenger\userdata\%username%\default colour.dll" 
if "%defaultcolor%" == "aqua" @echo ^3> "\\user-computer\users\user\documents\codes+stuff\messenger\userdata\%username%\default colour.dll" 
+0

あなたの知識を固めるためには、 'echo eggs 7> spam.txt 1>&7'が書き込みアクセスで「spam.txt」を開き、そのファイル記述子をFD 7に複製することを理解する必要があります。次に、' 1>&7'はFD 7標準出力FD 1に、 '1> spam.txt'またはもっと単純に'> spam.txt'を使用したかのように効果的に働きます。 – eryksun

+0

@ Stavr00これはファイルに(>の代わりに>>)追加することにも適用されますか? –

+0

@DarkEncrypter:はい、それは同じです。 – Stephan

0

を次のようにまた、あなたはおそらくそれを少し短くすることができ、あなたのエコーの前に@を削除し、>

+0

@を削除しても違いはありません。 –

+0

スペースを追加しても動作します。 –

2

の前にスペースを入れてキャレットエスケープを使用することができます注:

Set/P "defaultcolor=Enter the colour you want... " 
(
    If /I "%defaultcolor%"=="default" Echo 7 
    If /I "%defaultcolor%"=="blue" Echo 1 
    If /I "%defaultcolor%"=="green" Echo 2 
    If /I "%defaultcolor%"=="aqua" Echo 3 
)>"\\user-computer\users\user\documents\codes+stuff\messenger\userdata\%username%\default colour.dll" 

.dllファイルは通常、標準的なテキストが含まれていないことに注意してください。

1

いくつかの他の方法:

echo 5 >file.txt 

注:あまりにもファイルに書き込まれ5後にスペースがあります。

>file.txt echo 5 

注:最も堅牢なソリューションimho。

(echo 5)>file.txt 
関連する問題