经过试验,作出两点猜测,各位一起求证求证:
1、命令本身自然会转义一层
2、多出的单个反斜杠无效
3、每个|符会增加一层转义
请看如下试验,本义是想把c:\替换成\\PPC,但试验后发现要7个反斜杠才能成功。而且,从3个反斜杠产生一个输出反科杠起,每4个原式中的反斜杠产生一个输出反斜杠。
F:\Backup>echo %temp%|sed "s@.:@\\PPC@g;"
PPC\DOCUME~1\Username\LOCALS~1\Temp
F:\Backup>echo %temp%|sed "s@.:@\\\PPC@g;"
\PPC\DOCUME~1\Username\LOCALS~1\Temp
F:\Backup>echo %temp%|sed "s@.:@\\\\PPC@g;"
\PPC\DOCUME~1\Username\LOCALS~1\Temp
F:\Backup>echo %temp%|sed "s@.:@\\\\PPC@g;"
\PPC\DOCUME~1\Username\LOCALS~1\Temp
F:\Backup>echo %temp%|sed "s@.:@\\\\\PPC@g;"
\PPC\DOCUME~1\Username\LOCALS~1\Temp
F:\Backup>echo %temp%|sed "s@.:@\\\\\\PPC@g;"
\PPC\DOCUME~1\Username\LOCALS~1\Temp
F:\Backup>echo %temp%|sed "s@.:@\\\\\\\PPC@g;"
\\PPC\DOCUME~1\Username\LOCALS~1\Temp
F:\Backup>echo %temp%|sed "s@.:@\\\\\\\\PPC@g;"
\\PPC\DOCUME~1\Username\LOCALS~1\Temp
F:\Backup>echo %temp%|sed "s@.:@\\\\\\\\\PPC@g;"
\\PPC\DOCUME~1\Username\LOCALS~1\Temp
F:\Backup>echo %temp%|sed "s@.:@\\\\\\\\\\PPC@g;"
\\PPC\DOCUME~1\Username\LOCALS~1\Temp
F:\Backup>echo %temp%|sed "s@.:@\\\\\\\\\\\PPC@g;"
\\\PPC\DOCUME~1\Username\LOCALS~1\Temp
F:\Backup>echo %temp%|sed "s@.:@\\\\\\\\\\\\PPC@g;"
\\\PPC\DOCUME~1\Username\LOCALS~1\Temp
F:\Backup>echo %temp%|sed "s@.:@\\\\\\\\\\\\\PPC@g;"
\\\PPC\DOCUME~1\Username\LOCALS~1\Temp
F:\Backup>echo %temp%|sed "s@.:@\\\\\\\\\\\\\\PPC@g;"
\\\PPC\DOCUME~1\Username\LOCALS~1\Temp
F:\Backup>echo %temp%|sed "s@.:@\\\\\\\\\\\\\\\PPC@g;"
\\\\PPC\DOCUME~1\Username\LOCALS~1\Temp
F:\Backup>echo %temp%|sed "s@.:@\\\\\\\\\\\\\\\\PPC@g;"
\\\\PPC\DOCUME~1\Username\LOCALS~1\Temp
F:\Backup>echo %temp%|sed "s@.:@\\\\\\\\\\\\\\\\\PPC@g;"
\\\\PPC\DOCUME~1\Username\LOCALS~1\Temp
F:\Backup>echo %temp%|sed "s@.:@\\\\\\\\\\\\\\\\\\PPC@g;"
\\\\PPC\DOCUME~1\Username\LOCALS~1\Temp
F:\Backup>echo %temp%|sed "s@.:@\\\\\\\\\\\\\\\\\\\PPC@g;"
\\\\\PPC\DOCUME~1\Username\LOCALS~1\Temp