0

我有与这篇文章类似的问题,但我无法让解决方案正常工作(我是一个新手)。

我在网络驱动器上有一组文件夹,每个文件夹都以管理员命名(例如\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
4

1 回答 1

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!"
  )
)
于 2013-07-09T21:37:45.127 回答