2012-08-12 55 views
1

我有一个约1000个文件:CMD批创建的文件名称的文件夹,并把它里面

_etc_sec 
_home_host_www_temp 
and etc. 

如何让批处理文件,使文件夹彼此依赖于它的文件名内,然后把这个文件到它。

所有文件都在d:\ 因此,如果我们有文件名为_etc_sec,我们必须创建一个名为d的文件夹:\等,然后把文件_etc_sec到文件d:\等

所以,如果我们的文件命名_home_host_www_temp我们必须创建一个名为d:\ home的文件夹,然后在这个文件夹内创建文件夹主机,然后在文件夹主机创建文件夹www然后把文件_home_host_www_temp到文件d:\ home \ host \ www

我知道怎么做, cmd对我来说很难。谢谢。

+1

由于Windows不允许在文件名中使用'/',所以无法在Windows平台上以任何语言进行操作。 /字符是\文件夹分隔符的替代,尽管它在Windows中并不总是可靠的。 – dbenham 2012-08-12 17:40:16

+0

对不起,我有_文件名 – 2012-08-12 17:44:59

+0

如果你知道如何在VBA中做到这一点,为什么不使用VBScript呢?与VBA具有几乎相同的语法,并且可以直接在cmd shell中通过cscript命令运行。 – 2012-08-12 17:45:32

回答

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" 
) 
) 
+0

非常感谢 – 2012-08-12 18:16:53

相关问题