1

我有大约 1000 个文件,例如:

_etc_sec
_home_host_www_temp
and etc.

如何根据文件名制作批处理文件以在彼此内部制作文件夹,然后将此文件放入其中。

所有文件都在 d:\ 因此,如果我们有名为 _etc_sec 的文件,我们必须创建名为 d:\etc 的文件夹,然后将文件 _etc_sec 放入文件 d:\etc

因此,如果我们有名为 _home_host_www_temp 的文件,我们必须创建名为 d:\home 的文件夹,然后在此文件夹中创建文件夹 host,然后在文件夹 host 中创建文件夹 www,然后将文件 _home_host_www_temp 放入文件 d:\home\host\www

我知道如何用 VBA 做到这一点,但批处理 cmd 对我来说很难。谢谢。

4

1 回答 1

1

使用 SET 搜索替换将 _ 改为 \,然后使用 FOR 变量 ~p 修饰符获取需要创建的完整路径。单个 MKDIR 命令可以创建一系列嵌套目录。我在循环中打开和关闭延迟扩展,以防万一你有一个带有!字符的文件名。

@echo off
setlocal disableDelayedExpansion
for %%F in (*_*) do (
  set "file=%%F"
  setlocal enableDelayedExpansion
  for %%A in ("!file:_=\!") do (
    endlocal
    2>nul mkdir "%%~pA"
    >nul move "%%F" "%%~pA"
  )
)
于 2012-08-12T18:04:24.443 回答