2013-04-17 45 views
2

如果該標題沒有足夠讓人困惑......希望我想要做的事情更容易理解。批處理文件遞歸地將多個父目錄中的單個子目錄移動到另一個單個定義的目錄中

Windows 7,以防萬一它需要說。

我在我工作的文件夾中有多個目錄;

C:\WorkingDir\1 
C:\WorkingDir\2 
C:\WorkingDir\3 
and so on 

在每個這些文件夾的(1,2,3,等等)是一個單一的子目錄並且沒有其他文件或文件夾;

C:\WorkingDir\1\5E04AB 
C:\WorkingDir\2\4F07FC 
C:\WorkingDir\3\9DA04F 

我需要將這些單個子目錄從父文件夾中移動到一個新文件夾;

C:\NewFolder\5E04AB 
C:\NewFolder\4F07FC 
C:\NewFolder\9DA04F 

就是這樣!我認爲這可能很簡單,但我無法圍繞變量或更好的資源來解釋如何使用它們。我根本不使用批處理文件,所以我非常抱歉這個求救信息。希望有人更瞭解有一個簡單的解釋,可以幫助我走出:-)

我發現這一點:http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true

但有人可以鏈接到我的資源在那裏我可以瞭解更多有關批次的變量和參數,以備將來參考?

謝謝謝謝謝謝

更新:

@endoro 感謝您的答覆。第一次嘗試運行代碼時肯定發生了用戶錯誤。它工作正常,一切都很好!非常感謝!

更新2 運行代碼User1貢獻後,它將創建我的NewFolder目錄,但不會複製任何內容。它仍然是空的。下面是一些在DOS下重複輸出的,當我運行它:

C:\WorkingDir>(
set fldr2=C:\WorkingDir\1\5E04AB 
move "C:\WorkingDir\\" "C:\NewFolder\" 
) 
The system cannot find the file specified. 

C:\WorkingDir>(
set fldr2=C:\WorkingDir\2\4F07FC 
move "C:\WorkingDir\\" "C:\NewFolder\" 
) 
The system cannot find the file specified. 

C:\WorkingDir>(
set fldr2=C:\WorkingDir\3\9DA04F 
move "C:\WorkingDir\\" "C:\NewFolder\" 
) 
The system cannot find the file specified.` 
+0

好的,我試過這個,但只是在我嘗試運行它時纔得到「命令的語法不正確」。 '@echo off' '&setlocal' '設置 「工作目錄= C:\工作目錄」'' MD 「C:\ NewFolder」 2> nul' 'PUSHD 「%工作目錄%」'' cd' (*)do/d %% i在(「%%〜i \ *」)中的/ d %% j do echo echo「%%〜fj」「C:\ NewFolder \ %%〜nxj」 'popd' – user2291844

+0

您是否想要針對這組特定的文件夾修復這個問題,或者對於這個問題一般? – user1

回答

0

請查看輸出並刪除echo,如果是OK:

@echo off &setlocal 
set "workingdir=WorkingDir" 
md "C:\NewFolder" 2>nul 

pushd "%workingdir%" 
cd 
for /d %%i in (*) do for /d %%j in ("%%~i\*") do echo move "%%~fj" "C:\NewFolder\%%~nxj" 
popd 
+0

我無法弄清楚如何讓我的評論顯示正確的間隔和一切,當我回復..我用我的代碼後面的蜱,但它沒有正確顯示我的間距和換行符。 http://stackoverflow.com/editing-help#need-more-detail也沒有幫助.. – user2291844

+0

我檢查了代碼,這裏沒關係。你看到'cd'命令的輸出了嗎?這應該顯示'C:\ WorkingDir'。 – Endoro

+0

也適用於我 - 我直接複製了OP的版本。只有改變是我使用的驅動器號。 – Magoo

0

我一直沒能測試這個但是:

@echo off 
setlocal EnableDelayedExpansion 
md "c:\NewFolder\" 
cd "C:\WorkingDir\" 
for /D /r %%a in ("*") do (
    set fld1=%%a 
    cd "%fld1%" 
    for /D /r %%b in ("*") do (
     set fld2=%%b 
     move "c:\WorkingDir\%fld1%\%fld2%" "C:\NewFolder\%fld2%" 
     ) 
    ) 

而對於批量一個很好的資源:

http://ss64.com/nt/

+0

它運行但不起作用。我將在一秒內編輯我的原始問題以顯示此批處理腳本的輸出。 – user2291844

+0

感謝您提供批量信息的鏈接! – user2291844

+0

@ user2291844:有一些錯誤標記的變量...我修正了它們... – user1

相關問題