0

固定 IP とサブネットを設定し、Vista で完全に動作する dhcp に戻るこのバッチがあります。しかし、それを同僚の XP マシンに入れようとすると、IF Exist Rename で問題が発生します。

Vista コード:

@echo off
cls

:start
if "%~n0"=="static" goto static
if "%~n0"=="dhcp" goto dhcp
echo Batch file MUST be named (static or dhcp)
echo File will be renamed static.bat
pause
goto end

:static
set /p craig1= IP Address?
set /p craig2= Subnet Mask?
echo Setting IP to %craig1% and Subnet mask to %craig2%
netsh int ip set address "local area connection" static %craig1% %craig2%
echo Waiting for IP to update...
@choice /c 12 /T 3 /d 1 >  NUL
ipconfig /all
cls
echo Successfully Set A Static IP!
pause
goto end

:dhcp
echo Setting Dynamic (DHCP) IP
netsh int ipv4 set address "Local Area Connection" dhcp
echo Setting Dynamic (DHCP) DNS
netsh int ipv4 set dnsserver "Local Area Connection" dhcp
echo Waiting for IP to update...
@choice /c 12 /T 3 /d 1 >  NUL
ipconfig /all
cls
echo Successfully Set To Obtain IP By DHCP!
pause
goto end

:end
IF EXIST %~dp0static.bat (ren %~dp0static.bat dhcp.bat) else (ren %0 static.bat)

XPコード:(netshコマンドを機能させるためにいくつか変更する必要がありました)

@echo off
cls

:start
if "%~n0"=="static" goto static
if "%~n0"=="dhcp" goto dhcp
echo Batch file MUST be named (static or dhcp)
echo File will be renamed static.bat
pause
goto end

:static
set /p craig1= IP Address?
set /p craig2= Subnet Mask?
echo Setting IP to %craig1% and Subnet mask to %craig2%
netsh int ip set address "local area connection" static %craig1% %craig2%
echo Waiting for IP to update...
@choice /c 12 /T 3 /d 1 >  NUL
ipconfig /all
cls
echo Successfully Set A Static IP!
pause
goto end

:dhcp
echo Setting Dynamic (DHCP) IP
netsh int **ip** set address "Local Area Connection" dhcp
echo Setting Dynamic (DHCP) DNS
netsh int **ip** set **dns** "Local Area Connection" dhcp
echo Waiting for IP to update...
@choice /c 12 /T 3 /d 1 >  NUL
ipconfig /all
cls
echo Successfully Set To Obtain IP By DHCP!
pause
goto end

:end
IF EXIST %~dp0static.bat (ren %~dp0static.bat dhcp.bat) else (ren %0 static.bat)

問題は、一種のトグル スイッチとしてファイルの名前を変更しようとする :end ピースです。これは、何らかの理由で XP では機能しません (ファイル名が間違っている場合は、ファイルの名前も変更されます)。

IF EXIST %~dp0static.bat (ren %~dp0static.bat dhcp.bat) else (ren %0 static.bat)

おそらく単純なもので、すべてのバージョンのウィンドウで機能するこれを行うためのより良い方法があると思われます。どんな助けも大歓迎です。前もって感謝します。

4

2 に答える 2

3

これの代わりにこれ(ren %0 static.bat)を使用します(ren "%~f0" static.bat)

これにより、名前を入力してバッチファイルが起動される名前の変更の問題が修正されるはずです。

選択はXPにもネイティブではありません...使用できますping -n 4 localhost >nul

于 2013-07-04T12:00:24.513 に答える