我们有很多备份配置文件,我们需要保存在驱动器上。
该文件为123456_name.cfg
或12345_name.cfg
这可能有所不同,但始终以5-6 int开头。
我正准备制作一个批处理文件,该文件检查名称中“ _”之前的数字,
如果文件夹也以相同的编号开头,则将文件复制到该文件夹中,
如果文件夹不存在,请创建一个文件夹ID名称并将文件复制到该文件夹。
这是我已经测试过的:
@echo off &setlocal
for /f "delims=" %%i in ('dir /b /a-d *.cfg') do (
set "filename1=%%~i"
setlocal enabledelayedexpansion
set "folder1=!filename1:~0,5!"
mkdir "!folder1!" 2>nul
move "!filename1!" "!folder1!" >nul
endlocal
)
问题是我有5个数字或6个数字开头的文件。 实际上,它仅使用前5个数字而不是文件全名创建一个Folder。 如果只能检查“ _”之前的ID
答案 0 :(得分:0)
在_
处分割字符串:
@echo off &setlocal
for %%a in (12345 123456 987 987654321) do break>%%a_name.cfg
for /f "delims=" %%i in ('dir /b /a-d *.cfg') do (
for /f "delims=_" %%j in ("%%~ni") do (
mkdir "%%j" 2>nul
move "%%i" "%%j"
)
)
第一个for %%a
仅用于生成一些测试文件。
第三个for
(%%j
)拆分文件名(%%~ni
),并在(第一个)_
之前占第一部分
因此,在move "%%i" "%%j"
中,%%i
是完整驱动器:\ path \ filename,而%%j
仅是数字