我和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
答案 0 :(得分: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!"
)
)