1

誰かがこれを手伝ってくれますか?現在の内部IPアドレスに基づいていくつかのネットワークドライブを接続しようとしているバッチファイルがあります。問題は、次のように出力されていることです。

ホーム192.168.2.99地下室

出力するだけの場所:ホーム192.168.2.99

コードは次のとおりです。

@echo off

@for /F "tokens=2 delims=:" %%i in ('"ipconfig | findstr IP | findstr 192."') do SET LOCAL_IP=%%i

@if ("%LOCAL_IP%" == "192.168.2.99") Call ConnectHome else (Call ConnectBasement)


:ConnectHome
@echo Home %LOCAL_IP%

:ConnectBasement
@echo Basement
@REM net use R: \\192.168.2.98\Storage
@REM net use S: \\192.168.2.98\MyStuff
@REM net use T: \\192.168.2.98\Server

また、IFステートメントを次のように置き換えてみました。

@if ("%LOCAL_IP%" == "192.168.2.99") goto ConnectHome else (goto ConnectBasement)

と:

@if ("%LOCAL_IP%" == "192.168.2.99") goto :ConnectHome else (goto :ConnectBasement)

結果は常に同じです...OSはWindows7Proです

4

3 に答える 3

2

Call現在使用しているバッチファイルとは異なるバッチファイルを呼び出すことを目的としています(ここを参照)。ラベルが渡された場合、そのラベルから実行されますが、ファイルの最後まで実行されるため、:ConnectBasement行に到達しても停止しません。

おそらく必要なのは:END、ファイルの下部、およびGoto :END:ConnectBasement行の直前にラベルを追加することです。Goto一貫性を保つために、全体ではなく使用することをお勧めしCallます。(Goto :EOF必要に応じて、ラベルを定義せずに使用することもできます。)

(または、PowerShellを学び、その機能機能を使用して、これをよりクリーンに実装します;-))

于 2012-07-25T13:42:51.183 に答える
1

:ConnectHomeに移動した後、:ConnectBasementに移動します。goto :eofすぐ下に追加します@echo Home %LOCAL_IP%

于 2012-07-25T13:38:29.373 に答える
1

:ConnectHome部分の後で実行を停止することを忘れていませんか?よくわかりませんが、その後は「地下室」を印刷してバッチを続けるだけだと思います。

編集:ジェロエンはそれに私を打ち負かしました:)

于 2012-07-25T13:39:51.307 に答える