转 DOS(CMD)下批处理换行问题/命令行参数换行 arg ms-dos
DOS(CMD)下批处理换行问题本人经常写一些DOS批处理文件,由于批处理中命令的参考较多且长,写在一行太不容易分辨,所以总想找个办法把一条命令分行来写,今天终于试成功两种方法。一、在CMD下,可以用^作为换行符,类似于Linux下的\。举例如下:
start pemu.exe ^
-net nic,vlan=1,macaddr=00:aa:00:00:01:01 -net tap,vlan=1,ifname=tap1 ^
-net nic,vlan=2,macaddr=00:aa:00:00:01:02 -net tap,vlan=2,ifname=tap2 ^
-net nic,vlan=3,macaddr=00:aa:00:00:01:03 -net tap,vlan=3,ifname=tap3 ^
-serial [url=telnet::1007,server]telnet::1007,server[/url] ^
-m 128 FLASH802
二、用变量。举例如下:
@echo off
setlocal
set command_name=start pemu.exe
set nic1=-net nic,vlan=1,macaddr=00:aa:00:00:01:01 -net tap,vlan=1,ifname=tap1
set nic2=-net nic,vlan=2,macaddr=00:aa:00:00:01:02 -net tap,vlan=2,ifname=tap2
set nic3=-net nic,vlan=3,macaddr=00:aa:00:00:01:03 -net tap,vlan=3,ifname=tap3
set options=-serial [url=telnet::1007,server]telnet::1007,server[/url]
set parameter= -m 128 FLASH802
%command_name% %nic1% %nic2% %nic3% %options% %parameter%
我补充一下:
换行的最后一个参数里最好不要带%&#,否则容易识别错误,有这种参数放到最后或者中间的参数集即可。