在Windows批處理文件中運行以下代碼時,除了包含星號的字符串外,所有操作都將被忽略。檢查通過數字傳遞的參數(即echo(%~6
)我可以看到星號 - 傳遞給時FOR循環,我有一個問題,它只是:在Windows批處理文件的FOR循環中轉義星號
@echo off
setlocal enableextensions enabledelayedexpansion
call:Concat cmd "this is a demo" " of concat functionality." " Hopefully it will work;" " but it doesn't when I pass an" " * asterisk" " character"
echo !cmd!
@goto:end
@goto:eof
:Concat
::Concatenates a given list of strings without including their quotes
::1 - output variable
::2* - strings to concat
echo(%*
set /a xx=0
set Concat_tempFlag=0
set Concat_temp=
for %%A in (%*) do (
set /a xx=!xx!+1
echo !xx! - %%A
if !Concat_tempFlag!==1 (
set Concat_temp=!Concat_temp!%%~A
) else (
set Concat_tempFlag=1
)
)
set "%~1="%Concat_temp%""
@goto:eof
:End
echo(Bye
exit /b 0
我已經嘗試for /F (tokens=*) %%A in ('echo(%*') do (
的建議在這裏:Batch FOR loop with asterisk(和變化)但沒有運氣。有任何想法嗎?提前致謝。
我沒有答案給你,但一個很好的效果[這裏](http://pastebin.com/965KhAME)。如你所知,答案已經[在這裏](http://stackoverflow.com/a/13617328/2098699)。 – Endoro