我有這個批處理工作來設置一個sta IP和子網,然後回到dhcp,它在Vista中完美工作。然而,當試圖把它放到同事XP機器中,我得到了IF存在重命名的問題。轉換如果存在從Vista重命名爲xp
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)
的問題是:到底片而言我嘗試將文件重命名爲一種切換開關。在XP中由於某種原因,這是行不通的。(這也重命名該文件,如果它被命名爲錯誤)
IF EXIST %~dp0static.bat (ren %~dp0static.bat dhcp.bat) else (ren %0 static.bat)
它可能是一些簡單的可能有更好的方法來做到這一點,將在所有版本的Windows工作,任何幫助將不勝感激。提前致謝。
由於生病給的是,當我回家怎麼樣'(仁%一試〜 dp0static.bat dhcp.bat)'那需要是'(ren「%〜f0」dhcp.bat)'?並且會'IF EXIST%〜dp0static.bat'正常工作,因爲我似乎無法看到該命令的哪一部分完成並且無法工作。如果您使用的XP可以嘗試'IF EXIST%〜dp0static.bat(ren%〜f0「dhcp.bat)else(ren%〜f0」static.bat)' – Chumbawamba
您的代碼應該在任何NT版本視窗。 'IF EXIST%〜dp0static.bat(ren「%〜f0」dhcp.bat)else(ren「%〜f0」static.bat)'這個問題可能是它啓動的方式,因爲同樣的問題會影響Win7和Win8等也是如此。 %0是在命令行鍵入的內容,或者當它被點擊或拖放時,它變成完整的drv:\ path \ filename.bat。 – foxidrive
我做了這些變化,它似乎在Vista中正常工作將嘗試XP時,我回家感謝您的幫助 – Chumbawamba