2013-04-04 169 views
1

這裏是我的批處理腳本的一小部分,儘管我在其中使用「」,但只要路徑中存在空格,就不會工作。批處理比較路徑名稱%1

call :part %1 

    :part 
    set _fname=%~nx1 
    if "%_fname:~0,7%"=="CREATE_" (
     copy "%~1" "%appdata%\somefolder" 
     goto :eof 
    ) 

如果我從類似的東西開始,一切工作正常。

mybatch.bat "Z:\hello_world\CREATE_abc.def" 

當開始這樣的:

mybatch.bat "Z:\hello world\CREATE_abc.def" 

我得到一個錯誤這樣的: 「世界\ CREATE_abc.def」 「==」 「」 無法處理。

任何想法?

+1

我相信你在代碼片段中顯得過於經濟。 'PA'毫無疑問是正確的,但如果你使用你聲明的參數執行批處理,你必須處理%2的字符串 - 但這不是你所顯示的。該字符串必須在您的代碼中更早被扣除。 – Magoo 2013-04-04 15:51:20

+0

是的,你是對的,但是錯誤實際上和這裏顯示的完全一樣。有一條IF線與其中一條有相同的問題。 – QAT 2013-04-04 16:05:45

回答

1

的問題是1%的稱爲解析:部分

嘗試

CALL :part "%~1" 

%~1擴展的第一個參數不包圍引號。並且添加的周圍引號可確保被叫標籤只接收一個參數。

+0

Jepp,修復它。我嘗試使用「%1」,但我不知何故錯過了「〜」>。> 非常感謝=) – QAT 2013-04-04 16:03:06