如何使用filename的子字符串创建文件夹

时间:2014-08-26 11:46:59

标签: batch-file dos subdirectory

我需要创建一个批处理文件,以便从文件名的子字符串创建一个文件夹 示例文件名:txt_abc_123 创建一个名称介于" _"之间的文件夹(ABC) 和文件名(123)

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

查看FOR /F的帮助,类似FOR /F "tokens=2,3* delims=_" %%a in ("txt_abc_123 ")的内容会在%% a中产生abc,在%% b中产生123。

答案 1 :(得分:0)

如果您知道文件名中只有两个下划线,这是一个解决方案:

@echo off
setlocal enabledelayedexpansion
set xfile=txt_abc_123
set n=0
set zz=0
set before=
set file=
set folder=
:begin
set yy=!xfile:~%n%,1!
set /a n=n+1
if "%yy%"=="_" (
  if %zz% EQU 0 (
    set zz=1
  ) ELSE (
    set zz=2
  )
)
if %zz% EQU 0 (
  set before=%before%%yy%
)
if %zz% EQU 1 (
  if not "%yy%"=="_" (
    set folder=%folder%%yy%
  )
)
if %zz% EQU 2 (
  if not "%yy%"=="_" (
    set file=%file%%yy%
  )
)

if not "%yy%"=="" (
  goto begin
)

echo Folder: %folder%
echo File:   %file%

if not exist %folder%\ (md %folder%)
move %xfile% %folder%\%file%

endlocal

如果您不知道您只有两个下划线,则需要稍微修改一下。

如果要为多个文件运行此操作,请将上面的txt_abc_123替换为%1,保存到文件batchfilename.bat,然后使用

运行
for %i in (*_*_*) do (
  batchfilename.bat %i
)