batch-file - 根据部分名称将文件移动到文件夹中,但不先创建文件夹
问题描述
我有一个这样的文件夹列表
Il Piccolo Sceriffo
Marvel Mix
Orfani
Plutos
Oscar Bestsellers
Pecos Bill
我有这样的文件
Il Piccolo Sceriffo 41 (Dardo 1994-03) [c2c dinofelix].cbr
Il piccolo sceriffo 44 (Dardo 1994-06) [c2c mystere e dinofelix].cbr
Marvel Mix 006 [1996-09][ITA][c2c][Cer8 - Miao Films].cbr
Orfani 042 - Terra 3 - Oltre il muro (2017-03).cbr
Oscar Bestsellers 1461 - Pippo Pensieri In Liberta' (Mondadori 2004-06).cbr
Pecos Bill 047 - Serie 3 - 10-11-12 (Dardo 1997-04) (c2c) [Ciupie - Dinofelix].cbr
像这样移动文件夹中的文件
Il Piccolo Sceriffo
|
|--- Il Piccolo Sceriffo 41 (Dardo 1994-03) [c2c dinofelix].cbr
|--- Il piccolo sceriffo 44 (Dardo 1994-06) [c2c mystere e dinofelix].cbr
Marvel Mix
|
|--- Marvel Mix 006 [1996-09][ITA][c2c][Cer8 - Miao Films].cbr
Orfani
|
|--- Orfani 042 - Terra 3 - Oltre il muro (2017-03).cbr
我使用这个脚本
@echo off
setlocal enabledelayedexpansion
pushd %1
for /F "USEBACKQ tokens=*" %%a in (`dir /b /a:-d`) do (
set "_file=%%a"
for /D %%b in (*) do (
if NOT "x!_file:%%b=!" == "x!_file!" (
move "%%a" "%%b"
)
)
)
popd
问题:如果我想移动,我需要先创建一个文件夹列表。但我不想以前创建文件夹。
有没有办法以最接近我给出的示例的方式创建文件夹以根据其名称移动文件?
编辑:我在使用脚本之前创建了文件夹。我尝试的是通过脚本创建新文件夹,而不必先手动创建它们。
我的名字的模式是 4 :
NAME space + numbers
NAME space -
NAME SPACE NAME space + numbers
NAME SPACE NAME space + -
例如:
艾伦 02
艾伦 -
艾伦福特 09
艾伦福特 -
解决方案
此答案基于您定义的模式some string with or without spaces
,后跟space
数字或-
. 您不能按空格分割,因为在第一个(想要的)字符串中可能有一个或多个,但您可以在数字和-
. 只是不要忘记从找到的字符串中删除最后一个字符(空格):
@echo off
setlocal enabledelayedexpansion
for %%a in (*.cbr) do (
for /f "delims=0123456789-" %%b in ("%%a") do (
set "folder=%%b"
ECHO md "!folder:~0,-1!" 2>nul
ECHO move "%%a" "!folder:~0,-1!\"
)
)
出于安全原因,我解除了md
和命令的武装。move
排除故障后删除ECHO
'。
注意:如果文件名包含感叹号,则会出现问题。
推荐阅读
- oracle - 如果第一个查询结果为空,则转到 plsql 中的第二个查询
- python-2.7 - 如何在列表中添加 2 个元素并将每 2 个元素的总和放入另一个列表
- c - 使用 Open MP 的递归搜索树中的最大内核数
- azure-sql-data-warehouse - resource_class 为 NULL 的含义
- linux - 来自 docker daemon 的错误响应:无法监听抽象 unix 套接字
- ruby - 使用 .sum 到 Ruby 中的数组时没有方法错误
- javascript - 如何将列表项作为键添加到redux中的对象?
- javascript - 删除标签后如何完全停止脚本
- java - Elasticsearch:如何调用must长度与数组不同的Java High Level REST Client
- python - 在 python 中加密与我的 HTTP 代理的连接