Batch file 批处理文件以根据文件名中的字符复制文件
我需要一个批处理文件,根据文件名将文件从单个文件夹复制到多个文件夹。文件的格式为abbcccc.txt,其中a和ccccc不重要,但BB是两个字符的代码。例如,文件aQWertyu.txt aWErtyui.txt应分别复制到文件夹QW和WE,这些文件夹将由脚本创建 我见过使用FOR/f的示例脚本,但看不到如何解析文件、检查字符2和3、然后创建文件夹和复制文件Batch file 批处理文件以根据文件名中的字符复制文件,batch-file,Batch File,我需要一个批处理文件,根据文件名将文件从单个文件夹复制到多个文件夹。文件的格式为abbcccc.txt,其中a和ccccc不重要,但BB是两个字符的代码。例如,文件aQWertyu.txt aWErtyui.txt应分别复制到文件夹QW和WE,这些文件夹将由脚本创建 我见过使用FOR/f的示例脚本,但看不到如何解析文件、检查字符2和3、然后创建文件夹和复制文件 谢谢 这需要多个部分: 延迟扩展。这是从下面的循环中获取子字符串所必需的: setlocal enableextensions enab
谢谢 这需要多个部分:
setlocal enableextensions enabledelayedexpansion
for
循环
for %%x in (*.txt) do (
set "filename=%%x"
set "folder=!filename:~1,2!"
注意的用法!文件名代码>这里。这是使用延迟扩展。通常使用%filename%
引用环境变量,但在解析完整循环时会展开这些变量,然后将%filename%
减少为零。延迟扩展,使用代码>解决了这个问题
if not exist !folder! mkdir !folder!
这仅在文件夹尚不存在时创建该文件夹 copy "%%x" !folder!
)
@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!
)
这需要多个部分:
setlocal enableextensions enabledelayedexpansion
for
循环
for %%x in (*.txt) do (
set "filename=%%x"
set "folder=!filename:~1,2!"
注意的用法!文件名代码>这里。这是使用延迟扩展。通常使用%filename%
引用环境变量,但在解析完整循环时会展开这些变量,然后将%filename%
减少为零。延迟扩展,使用代码>解决了这个问题
if not exist !folder! mkdir !folder!
这仅在文件夹尚不存在时创建该文件夹 copy "%%x" !folder!
)
@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!
)
非常感谢-太好了!对于“set”folder=!filename:~1,2!”,1和2的规则是什么?1是常量,然后是接下来的2个字符?1是从中开始子字符串的字符,2是长度。虽然如此,但这不是2,2,因为我要使用的字符从位置2开始,表示2个字符,还是第一个字符位于位置0?@user1528218-起始位置是从零开始的,0是第一个字符,1是第二个字符,等等。似乎缺少一件事:在第二个
之后,如果不存在…
,可能会有类似的情况:如果不存在!文件夹好吧,我从来没有…
:)只是开玩笑,对不起。非常感谢-太好了!对于“set”folder=!filename:~1,2!”,1和2的规则是什么?1是常量,然后是接下来的2个字符?1是从中开始子字符串的字符,2是长度。虽然如此,但这不是2,2,因为我要使用的字符从位置2开始,表示2个字符,还是第一个字符位于位置0?@user1528218-起始位置是从零开始的,0是第一个字符,1是第二个字符,等等。似乎缺少一件事:在第二个之后,如果不存在…
,可能会有类似的情况:如果不存在!文件夹嗯,我从来没有…
:)只是开玩笑,对不起。