我希望这在Windows批处理中是可能的:)
基于目录结构中的目录列表,是否可以获取该列表的结果,并在目录结构的/后/中间添加目录名以创建新目录?
例如,如果我向特定目录发出dir /b /s命令,它将列出该目录中的目录,如下所示:
E:\ftproot\MiddlewareIO>dir /b /s
E:\ftproot\MiddlewareIO\Benefits
E:\ftproot\MiddlewareIO\Blackboard
E:\ftproot\MiddlewareIO\Data-Warehouse
E:\ftproot\MiddlewareIO\EmplWorkerDemo
E:\ftproot\MiddlewareIO\IDM
E:\ftproot\MiddlewareIO\PayrollData
E:\ftproot\MiddlewareIO\PayrollGLData我想从上面的目录列表中获取结果,并将目录名"Archive“附加到目录结构的中间,这将创建这个新的目录结构。由此产生的结构如下:
E:\ftproot\MiddlewareIO\Archive\Benefits
E:\ftproot\MiddlewareIO\Archive\Blackboard
E:\ftproot\MiddlewareIO\Archive\Data-Warehouse
E:\ftproot\MiddlewareIO\Archive\EmplWorkerDemo
E:\ftproot\MiddlewareIO\Archive\IDM
E:\ftproot\MiddlewareIO\Archive\PayrollData
E:\ftproot\MiddlewareIO\Archive\PayrollGLData这个列表可能会增长,手动更新批处理文件可能会非常繁琐。
发布于 2014-07-31 17:54:57
@echo off
pushd E:\ftproot\MiddlewareIO
mkdir Archive
for /f "delims=\ tokens=1,2,3*" %%a in ('dir . /ad/s/b') do (
mkdir "Archive\%%~d"
)
popd还可以在创建目录之前检查目录是否存在:
@echo off
pushd E:\ftproot\MiddlewareIO
if not exist Archive\. mkdir Archive
for /f "delims=\ tokens=1,2,3*" %%a in ('dir . /ad/s/b') do (
if not exist "Archive\%%~d\." mkdir "Archive\%%~d"
)
popd新建议:过滤存档:
@echo off
pushd E:\ftproot\MiddlewareIO
if not exist Archive\. mkdir Archive
for /f "delims=\ tokens=1,2,3*" %%a in ('dir /ad /s /b ^| find /v "\Archive"') do (
if not exist "Archive\%%~d\." mkdir "Archive\%%~d"
)
popd发布于 2014-07-31 17:51:35
for命令是您的朋友。读取help for,然后在命令提示符中尝试
for /d %a in (*) do @echo %a正如您所看到的,它在当前目录中的所有子文件夹后面。
因此,
for /d %a in (*) do @echo %cd%\Archive\%a也许能满足你的需要
https://stackoverflow.com/questions/25065294
复制相似问题