2013-07-09 36 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

相关问题