2013-07-01 56 views
0

我已經搜索了一種方法來傳遞位於字符串中的特殊字符,但找不到任何相關的東西。目前該字符串在第一個特殊字符處連接。變量中的特殊字符

for /D /R "%cd%" %%d IN (*) do (call :Write_File "%%~nd") 

能逃脫被使用的字符或者我需要一個for循環來替代的特殊字符,而另一個替換它們?

該變量應該返回文件夾名稱。它返回全長字符串,除非它包含特殊字符%,&,,,。,等 在這一點上,它返回的一切,直到這一點。實例B &乙返回B,在那裏,因爲我需要它返回b & B.

使用命名三個示例文件夾: 「%$」, 「01,複製」 和03 &

呼應的變量,因爲它讀取它(& &回聲 「%%〜ND」): 「$%」, 「01,複製」 和射門第三 內重命名變量:WRITE_FILE(設定 「FOLDER =%〜1」): 「$」, 「01,複製」

編輯澄清:

特殊字符%,$,&,*,〜,等

用途:當呼應的文件夾名稱 有時錯過了特殊字符,有時它會跳過的文件夾完全。

+1

我看不到你的特殊字符:/ – Endoro

+1

什麼特殊字符?什麼字符串?什麼級聯? - 您沒有提供足夠的信息來允許其他人提供幫助。 – dbenham

+1

而且,對於/ D/R「%cd%」在......中沒有任何意義。你可以刪除'「%cd%」'。 – Endoro

回答

1

你不能用價值在這裏使用CALL,而是使用一個參考給一個變量。

for /D /R %%d IN (*) do (
    set "myDir=%%~nd" 
    call :Write_File myDir 
) 
exit /b 

:Write_File 
setlocal EnableDelayedExpansion 
set "param1=!%1!" 
echo !param1! 
endlocal 
exit /b 
+0

耶!它的工作,非常感謝。我期待它也會錯過最後一個文件夾,因爲它不在延遲擴展中。再次感謝! –