2017-04-27 26 views
0

如何使用批次從git結帳跳過文件夾。這是我的批處理文件。我有35個文件夾。但是,我不想簽出特定的文件夾。我需要跳過此文件夾的結帳。如何使用批次從git結帳跳過文件夾

@echo off 

set project=%1 


call :THISISWHEREITHAPPENS 
goto :eof 
w 
:THISISWHEREITHAPPENS 

for /D %%f in (*.*) do (
echo current project: 
echo %%f 
if %%f == "folder_name_that_I_want_to_skip_as_string" 
    goto skip 
else 
    goto chkout 

:skip 
    echo skippep 
    goto cont 
:chkout 
    echo : git checkout release_branch 
    cd %%f 
    git checkout release_branch  
    goto cont 
:cont 
    echo ------------------------------------------------------------- 
    cd .. 

) 
pause 
+0

就在你的腳本的開頭你'設置項目=%1',但隨後沒有在你的代碼中使用它。你應該對它進行「CD」嗎?還是要完全刪除? – Compo

+0

@Compo:完全刪除。 –

回答

0

不幸的是,您已經過分審查了您的代碼,因此很難確切地確定您的問題。你也不會說它在做什麼,它不該做或不應該做它應該做的。

我們留下來做假設,這總是危險的。

因此,與你發佈的代碼中突出的問題是,if非常字面,兩個參數必須是正好同樣被宣佈相等。

因此,

if %%f == "folder_name_that_I_want_to_skip_as_string" 

應該

if "%%f" == "folder_name_that_I_want_to_skip_as_string" 

if /I "%%f" == "folder_name_that_I_want_to_skip_as_string" 
如果你想比較是不區分大小寫

由於您知道%%f顯示的確切內容,因此我假設這些字符串似乎與引號相符。

+0

%% f是一個變量,我認爲%% f應該在迭代期間保持文件夾的名稱。 –

+0

我會嘗試刪除引號。 我試圖刪除引號,但這也沒有幫助。 –

+0

按照我的建議,在'if'語句中引用'%% f'並用引號括起來怎麼樣? – Magoo

0

的結構重寫:

@Echo Off 

Call :ThisIsWhereItHappens 

GoTo :EOF 

:ThisIsWhereItHappens 
For /D %%A In (*) Do (
    If /I Not "%%A"=="DirectoryNameString" (
     PushD "%%A" 
     Echo current project: 
     Echo %%A 
     Echo : git checkout release_branch 
     git checkout release_branch 
     Echo ------------------------------------------------------------- 
     PopD 
    ) Else Echo Skipped 
) 
Pause 
相關問題