我需要一个批处理文件,根据文件名将文件从单个文件夹复制到多个文件夹.这些文件的格式为aBBccccc.txt,其中a和ccccc无关紧要,但BB是2个字符代码.例如,文件aQWertyu.txt aWErtyui.txt应分别复制到文件夹QW和WE,这些文件夹将由脚本创建.
我见过使用FOR/f的示例脚本,但看不到如何解析文件,检查字符2和3,然后创建文件夹,并复制文件.
谢谢.
这需要多个部分:
延迟扩张.这是从下面的循环中获取子字符串所需的:
setlocal enableextensions enabledelayedexpansion
Run Code Online (Sandbox Code Playgroud)一个for用于遍历文件循环
for %%x in (*.txt) do (
Run Code Online (Sandbox Code Playgroud)找到相关的子字符串:
set "filename=%%x"
set "folder=!filename:~1,2!"
Run Code Online (Sandbox Code Playgroud)
注意!filename!这里的用法.这是使用延迟扩展.通常会引用环境变量,%filename%但在解析完整循环时会扩展这些变量,然后这些变量将减少%filename%为空.延迟扩展,使用!解决了这个问题.
创建文件夹:
if not exist !folder! mkdir !folder!
Run Code Online (Sandbox Code Playgroud)
这仅创建文件夹(如果该文件夹尚不存在).
复制文件:
copy "%%x" !folder!
)
Run Code Online (Sandbox Code Playgroud)把它们放在一起:
@echo off
setlocal enableextensions enabledelayedexpansion
for %%x in (*.txt) do (
set "filename=%%x"
set "folder=!filename:~1,2!"
if not exist !folder! mkdir !folder!
copy "%%x" !folder!
)
Run Code Online (Sandbox Code Playgroud)