我让这段代码在我的CMD提示上工作(用一个%代替了%%),但是当我通过一个.bat文件执行它时,它不能工作。
for /f "tokens=5 delims=: " %%G in ('netsh interface IPv4 show dnsserver "Ethernet 2" ^| findstr /C:"Servidores DNS configurados estáticamente"') DO (Echo %%G)我正在尝试做一个.bat,把我的主域名和次域名换成另外两个。我试着做这样的事情:
@echo off
cls
color A
cls
SET DNS1=46.101.36.120
SET DNS2=46.101.149.135
SET DNSGoogle1=8.8.8.8
SET DNSGoogle2=8.8.4.4
SET NAME=Ethernet 2
for /f "tokens=5 delims=: " %%G in ('netsh interface IPv4 show dnsserver "%NAME%" ^| findstr /C:"Servidores DNS configurados estáticamente"') DO IF %DNSGoogle1%==%%G (goto netflixDNS) ELSE (goto googleDNS)
:netflixDNS
echo "Netflix DNS"
netsh interface ipv4 delete dnsserver "%NAME%" all
netsh interface ip set dnsservers "%NAME%" static %DNS1%
netsh interface ip add dnsservers "%NAME%" %DNS2% index=2
ipconfig /flushdns
PAUSE
EXIT
:googleDNS
echo "Google DNS"
netsh interface ipv4 delete dnsserver "%NAME%" all
netsh interface ip set dnsservers "%NAME%" static %DNSGoogle1%
netsh interface ip add dnsservers "%NAME%" %DNSGoogle2% index=2
ipconfig /flushdns
PAUSE
EXIT由于某些原因,我的FOR不能工作了。
发布于 2015-11-14 21:50:34
尽管wOxxOm的评论解决了这个问题,但这个问题需要一些解释:旗帜的mojibake情况。为了避免这种mojibake,请在保存它的相同代码页下运行您的批处理脚本:如果保存为ANSI编码(notepad),则假定为CP1252。
作为证据:
CP850 (DOS西欧)编码,并将另一个文件CP1252 (Windows Western) Windows
请不要在批处理脚本中插入下一个代码段。Copy & paste it in a open command line window:
chcp 850>NUL
echo áéíóúüýñäëêöã 850>ew-850.txt
chcp 1252>NUL
echo áéíóúüýñäëêöã 1252>ew1252.txt
for %G in (437 850 1252) do @chcp %G&>NUL timeout /T 1 &findstr "^" "ew*.txt"输出
==> chcp 850>NUL
==> echo áéíóúüýñäëêöã 850>ew-850.txt
==> chcp 1252>NUL
==> echo áéíóúüýñäëêöã 1252>ew1252.txt
==> for %G in (437 850 1252) do @chcp %G&>NUL timeout /T 1 &findstr "^" "ew*.txt"
Active code page: 437
ew-850.txt:áéíóúü∞ñäëêö╞ 850
ew1252.txt:ßΘφ≤·ⁿ²±ΣδΩ÷π 1252
Active code page: 850
ew-850.txt:áéíóúüýñäëêöã 850
ew1252.txt:ßÚݾ·³²±õÙÛ÷Ò 1252
Active code page: 1252
ew-850.txt: ‚¡¢£ì¤„‰ˆ”Æ 850
ew1252.txt:áéíóúüýñäëêöã 1252
==>使用Czech and Slovak accented letters和中欧编码(代码页CP852和CP1250)(分类不完整)的另一个示例:
chcp 852>NUL
echo áéíóúůýňěščřž 852>ee-852.txt
chcp 1250>NUL
echo áéíóúůýňěščřž 1250>ee1250.txt
for %G in (437 852 1250) do @chcp %G&>NUL timeout /T 1 &findstr "^" "ee*.txt"编辑:另一个额外的示例(复制并粘贴到cmd窗口中)。
ECHO OFF
chcp 850>NUL
echo echo %~0 [áéíóúüýñäëêöã] 850>ew-850.bat
chcp 1252>NUL
echo echo %~0 [áéíóúüýñäëêöã]1252>ew1252.bat
chcp 850>NUL
ew-850.bat
ew1252.bat
chcp 1252>NUL
ew-850.bat
ew1252.bat
ECHO ON输出
==> ECHO OFF
chcp 850>NUL
echo echo %~0 [áéíóúüýñäëêöã] 850>ew-850.bat
chcp 1252>NUL
echo echo %~0 [áéíóúüýñäëêöã]1252>ew1252.bat
chcp 850>NUL
ew-850.bat
ew-850.bat [áéíóúüýñäëêöã] 850
ew1252.bat
ew1252.bat [ßÚݾ·³²±õÙÛ÷Ò]1252
chcp 1252>NUL
ew-850.bat
ew-850.bat [ ‚¡¢£ì¤„‰ˆ”Æ] 850
ew1252.bat
ew1252.bat [áéíóúüýñäëêöã]1252
ECHO ON
==>https://stackoverflow.com/questions/33703449
复制相似问题