Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如何使用filename的子字符串创建文件夹_Batch File_Dos_Subdirectory - Fatal编程技术网

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

Batch file 如何使用filename的子字符串创建文件夹,batch-file,dos,subdirectory,Batch File,Dos,Subdirectory,我需要创建一个批处理文件,从文件名的子字符串创建一个文件夹 文件名示例:txt_abc_123 创建一个名为“u”(abc)的文件夹 文件名为(123) 任何帮助都将不胜感激。请查看for/F的帮助,类似于for/F“tokens=2,3*delims=%%a in(“txt\u abc\u 123”)将在%%a和%%b中生成abc。如果您知道文件名中只有两个下划线,下面是一个解决方案: @echo off setlocal enabledelayedexpansion set xfile=tx

我需要创建一个批处理文件,从文件名的子字符串创建一个文件夹 文件名示例:txt_abc_123 创建一个名为“u”(abc)的文件夹 文件名为(123)


任何帮助都将不胜感激。

请查看
for/F
的帮助,类似于
for/F“tokens=2,3*delims=%%a in(“txt\u abc\u 123”)
将在%%a和%%b中生成abc。如果您知道文件名中只有两个下划线,下面是一个解决方案:

@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\u abc\u 123
替换为
%1
,保存到文件batchfilename.bat,然后使用运行

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

这是Windows还是MS-DOS?