2013-07-09 62 views
0

我有類似的問題this post,但我無法得到解決方案的工作(我是一個總新手)。批處理文件在其他子文件夾中創建子文件夾,但只在頂級

我在網絡驅動器上有一組文件夾,每個文件夾以管理器命名(例如\sfnetfile\DEPT\HR_Manager\Manager, Test\sfnetfile\DEPT\HR_Manager\Manager, Test 2)。我試圖在2013\Variable的每個管理器文件夾中創建一個文件夾/子文件夾組合。在某些情況下,管理員已經擁有2013子文件夾,但不包含Variable子子文件夾(原諒愚蠢的術語)。

我也想阻止該批處理文件從創建每個經理夾(所以我不想要它,例如內的其它子文件夾2013\Variable,創造另一個層面下來:\sfnetfile\DEPT\HR_Manager\Manager, Test 2\2012\2013\Variable

這裏是我的代碼:

FOR /d %A IN (\sfnetfile\DEPT\HR_Manager*) DO mkdir "%A"\2013\Variable 

回答

1

像這樣的東西應該做的:

@echo off 

for /d %%d in (\\sfnetfile\DEPT\HR_Manager\*) do md "%%~d\2013\Variable" 2>nul 

假設sfnetfile是遠程服務器的名稱,DEPT是該服務器上的共享文件夾。如果sfnetfile是映射的網絡驅動器上的頂層文件夾,即更改爲:

@echo off 

for /d %%d in (X:\sfnetfile\DEPT\HR_Manager\*) do md "%%~d\2013\Variable" 2>nul 

其中X:是網絡驅動器的驅動器號。

編輯:由於@dbenham正確地提到,重定向錯誤輸出(以抑制現有葉文件夾的錯誤消息)也將抑制任何其他錯誤消息。更復雜的方法將檢查該文件夾不存在,然後才創建它:

@echo off 

setlocal EnableDelayedExpansion 

for /d %%d in (\\sfnetfile\DEPT\HR_Manager\*) do (
    set "folder=%%~d\2013\Variable" 
    if exist "!folder!" (
    if not exist "!folder!\" echo "!folder!" exists as a file! 1>&2 
) else (
    mkdir "!folder!" 
) 
) 
+1

+1,以重定向錯誤輸出到NUL的替代方法是前綴'的MD,如果不存在「%% d \ 2013 \變量\「'。這樣做的一個優點是,如果存在阻止創建文件夾的名爲Variable的文件,您將看到一條錯誤消息。 – dbenham

+0

它工作完美!謝謝! – compperson

相關問題