windows - 扫描文件名并将文件移动到名称源自文件名的目录和子目录
windows - scan filenames and move files to dirs and subdirs with names derived from filenames
我(不幸的是)有数千个文件需要重新组织到不同的文件夹方案中。
我的所有文件都遵循以下模式:
d:\mainfolder[=11=]01.pic\AMY_CAT_file1.jpg
d:\mainfolder[=11=]01.pic\EVE_CAT_file1.jpg
d:\mainfolder[=11=]02.pic\AMY_BIRD_file2.jpg
d:\mainfolder[=11=]02.pic\EVE_BIRD_file2.jpg
我正在寻找的是一个 *.bat 文件,它可以将文件移动到这样的文件夹中:
...\CAT_\AMY[=12=]01.pic\AMY_CAT_file1.jpg
...\CAT_\EVE[=12=]01.pic\EVE_CAT_file1.jpg
...\BIRD\AMY[=12=]02.pic\AMY_BIRD_file2.jpg
...\BIRD\EVE[=12=]02.pic\EVE_BIRD_file2.jpg
换句话说,必须移动文件:
- 进入以文件源目录命名的子文件夹
- 在以1st到3rd命名的文件夹内
符号,最后
- 在以文件名中第5到第8个符号命名的文件夹内
我意识到这听起来可能令人困惑,非常感谢任何帮助。
1st to 3rd symbol
和 5th to 8th symbol
是个坏主意,因为名称的长度可能不同(参见 cat
、bird
,可能还有 elephant
; 或 Eve
、Amy
,可能还有 Stephan
),但你有一个漂亮的下划线可以作为分隔符:
@echo off
setlocal EnableDelayedExpansion
cd /d "d:\mainfolder"
for /f "delims=" %%F in ('dir /s /b *.jpg') do (
for /f "tokens=1,2,* delims=_" %%A in ("%%~nF") do (
set folder=%%~dpF
for %%X in (!folder:~0^,-1!) do (
ECHO move "%%F" "...\%%B\%%A\%%~nxX\%%~nxF"
)
)
)
我(不幸的是)有数千个文件需要重新组织到不同的文件夹方案中。 我的所有文件都遵循以下模式:
d:\mainfolder[=11=]01.pic\AMY_CAT_file1.jpg
d:\mainfolder[=11=]01.pic\EVE_CAT_file1.jpg
d:\mainfolder[=11=]02.pic\AMY_BIRD_file2.jpg
d:\mainfolder[=11=]02.pic\EVE_BIRD_file2.jpg
我正在寻找的是一个 *.bat 文件,它可以将文件移动到这样的文件夹中:
...\CAT_\AMY[=12=]01.pic\AMY_CAT_file1.jpg
...\CAT_\EVE[=12=]01.pic\EVE_CAT_file1.jpg
...\BIRD\AMY[=12=]02.pic\AMY_BIRD_file2.jpg
...\BIRD\EVE[=12=]02.pic\EVE_BIRD_file2.jpg
换句话说,必须移动文件:
- 进入以文件源目录命名的子文件夹
- 在以1st到3rd命名的文件夹内 符号,最后
- 在以文件名中第5到第8个符号命名的文件夹内
我意识到这听起来可能令人困惑,非常感谢任何帮助。
1st to 3rd symbol
和 5th to 8th symbol
是个坏主意,因为名称的长度可能不同(参见 cat
、bird
,可能还有 elephant
; 或 Eve
、Amy
,可能还有 Stephan
),但你有一个漂亮的下划线可以作为分隔符:
@echo off
setlocal EnableDelayedExpansion
cd /d "d:\mainfolder"
for /f "delims=" %%F in ('dir /s /b *.jpg') do (
for /f "tokens=1,2,* delims=_" %%A in ("%%~nF") do (
set folder=%%~dpF
for %%X in (!folder:~0^,-1!) do (
ECHO move "%%F" "...\%%B\%%A\%%~nxX\%%~nxF"
)
)
)