2017-10-20 15 views
0

したがって、基本的には、別のバッチファイルprofiledata.batから呼び出される複数の変数があるバッチファイルを作成しています。他のバッチファイル内の特定の変数を書き換える

ファイルが存在するかどうかをチェックします。そうでない場合は、新しいファイルを作成する必要があります。

if exist \user\profiledata.bat (
    set Pdata_exist=true 
    goto askPdata 
) else (
    goto newPdata 
) 

:newPdata 
if exist \user\NUL (
    if Pdata_exist=true goto delPdata 
    cd \user 
    goto addPdata 
) else (
    mkdir \user 
    cd \user 
    goto addPdata 
) 
set var2=10 
echo set var1=%var2%>profiledata.bat 
set var2=20 
echo set var1=%var2%>profiledata.bat 
REM Var1 is rewritten because var 2 changed. 

これで、コンピュータの情報がファイルに書き込まれます。しかし、あるものが後で変更された場合、その変数を書き換えるだけで、ファイルの残りの部分は書き換えないようにしたい。

たとえば、とともにechoコマンドを実行すると、variableだけでなくスクリプト全体が書き換えられます。私はそれをすることはできません。代わりに、ちょうどvariableを書き直したいと思います。

+0

私はあなたのコードに1つの 'ECHO'コマンドが表示されないので、何か助けが必要かわかりません。また、 'IF'コマンドを文字列の比較に使用する場合、2つの等号を使用する必要があります。' == ' – Squashman

+0

@Squashmanはい申し訳ありませんが、コードをすばやく書いていて、間違いを認識しませんでした。ありがとうございました。バッチファイルのデータを上書きせずにエコーコマンドを使用できないことがわかったため、エコーコマンドが削除されました。私はすぐにそれらを追加します。 – OhNoItIsAnotherAccount

+0

profiledata.batをどのようなものにするかの例を挙げてください。私はあなたの問題の記述を理解していません。 – Squashman

答えて

0

先頭のスラッシュをすべて削除し、Pdata_exist変数を二重引用符で囲んで隔離しました。

if exist user\profiledata.bat (
    set "Pdata_exist=true" 
    goto askPdata 
) else (
    goto newPdata 
) 

:newPdata 
if exist user\ (
    if "%Pdata_exist%"=="true" goto delPdata 
    cd user 
    goto addPdata 
) else (
    mkdir user 
    cd user 
    goto addPdata 
) 
関連する問題