求批处理改文件夹名称,删除文件夹名称中前10个字符和删除文件名称中后8个字符等功能

因工作需要,需要整理数千万数量的资料,现求四个或一个批处理,批量更改文件夹的名称,文件夹名称中可能会有空格或中文,功能要求,1.可以让我批量更改文件夹名称时,自动删除文件... 因工作需要,需要整理数千万数量的资料,现求四个或一个批处理,批量更改文件夹的名称,文件夹名称中可能会有空格或中文,功能要求,
1.可以让我批量更改文件夹名称时,自动删除文件夹名称中的前10个字符,具体几个字符,这个可以定义一个变量,让我输入。
示例:
原文件夹名称:
2014.07.11 No.999 Vicni[54P164M]
2014.07.14 No.1000 Sara[48P143M]
2014.07.16 No.1001 Lynn[56P182M]
要求将,文件夹名称中的前11个字符去掉,改后变成:
No.999 Vicni[54P164M]
No.1000 Sara[48P143M]
No.1001 Lynn[56P182M]

2.可以让我批量更改文件夹名称时,自动删除文件夹名称中的后8个字符,具体几个字符,这个可以定义一个变量,让我输入。
示例:
原文件夹名称:

No.999 Vicni[54P164M]
No.1000 Sara[48P143M]
No.1001 Lynn[56P182M]
要求将,文件夹名称中的后9个字符去掉,改后变成:
No.999 Vicni
No.1000 Sara
No.1001 Lynn
3.可以让我批量更改文件夹名称时,自动删除文件夹名称的指定字符串之后所有字符,包含指定的字符串自已也删除掉,这个批定的字符串可以定义一个变量,让我输入。
示例:
原文件夹名称:
Big toy aaa - Csdge [4050 pixels]
aasd Extreme - werwe [43400 pixels]
Home ads - adsde [40330 pixels]
Beautiful - asde [490 pixels]
要求将,文件夹名称中的 " - "包括这个字符串自己本身和之后的所有个字符去掉,(注释本示例中的字符串为:空格 中横线 空格)改后变成:
Big toy aaa
aasd Extreme
Home ads
Beautiful

4.可以让我批量更改文件夹名称时,任意指定文件夹名称中的两个字符串,将指定的两个字符串之间的字符去掉,包括指定的字符串本身也去掉。
示例:
原文件夹名称:
No.995 Abby[63P21131196M]
No.996 Cindy[51234175M]
No.997 Dora[622543P207M]
No.999 Vicni[54P1接受任务64M]
No.1000 Sara[48P俾143M]
No.1001 Lynn[56阿方索P182M]
No.1002 Stephy[48P8人145M]
No.1003 Winnie[54P2是个06M]
No.1004 Cindy[40P1师父说过的46MB]
No.1005 Dana[56P试试191MB]
要求将,文件夹名称中指定的两个字符串之间的字符去掉,本例是要求将[ 和 ]之间的内容去掉,包括指定的字符串本身,改后变成:
No.995 Abby
No.996 Cindy
No.997 Dora
No.999 Vicni
No.1000 Sara
No.1001 Lynn
No.1002 Stephy
No.1003 Winnie
No.1004 Cindy
No.1005 Dana
谢谢,各位高手,批处理可以分成4个独立的,也可以写成1个,写成1个时做成有选择项的让我选择也可以。万分感谢!
问题1,我在网上找到了一个批处理,好像可以。
@ECHO OFF&Setlocal EnableDelayedExpansion
for /d %%i in (*) do (set a=%%i
set b=!a:~10!
ren %%i !b!
)
但不知道何将那个10换成变量,让我在输入批处理后加个这个参数。如 rename 8 ,表示删除文件夹名称的前8位字符。
我试了一下这个批处理,只会更换文件夹的名称,不会更改文件的名称,挺好。
但是这个批处理有个问题,就是对有空格的文件夹名称不行,运行错误。
展开
 我来答
ijyfe
推荐于2017-10-03 · TA获得超过2998个赞
知道小有建树答主
回答量:1243
采纳率:25%
帮助的人:466万
展开全部
你好,你上面说的那个批处理不是不能处理空格的文件,只是缺少了英文状态的双引号而已

前面2个:

@echo off&setlocal enabledelayedexpansion
set /p str=请输入你要删除的字符串的个数(如果是删除前面的,输入10;如果删除后面的,输入:-8  输入后请点击回车键):
for /d %%i in (*) do (
   set "a=%%i"
   set "b=!a:~0,%str%!"
   ren "%%i" "!b!"
)
pause

后面2个:

@echo off
set /p str=请输入字符串(如-或[]):
for /d %%a in (*) do (
   for /f "tokens=1 delims=%str%" %%b in ("%%a") do (
      ren "%%a" "%%b"
   )

pause
追问

谢谢你的帮助,我测试了一下你写的两个批处理。

  1. 第一个程序,输入-8是没有问题的,删除了后面的字符。但是输入10是错误的,因为它运行后不是删除了前10位,是只保留了前10位。

  2. 第二个程序,如果输入[],很完美,对第四个问题解决了,但是对第三个问题中的那些字符就不起作用。出错提示为:此时不应有 - "。而且第三个问题中有空格。

    想再麻烦您帮我修改一下。谢谢!

追答
@echo off&setlocal enabledelayedexpansion
set /p str=请输入你要删除的字符串的个数(如果是删除前面的,输入10;如果删除后面的,输入:-8  输入后请点击回车键): 
for /d %%i in (*) do (
   set "a=%%i"
   echo %str%|findstr "-" >nul 2>nul&&set "b=!a:~0,%str%!"||set "b=!a:~%str%!   
   ren "%%i" "!b!"
)
pause
IP大神
2015-04-07 · TA获得超过614个赞
知道小有建树答主
回答量:1513
采纳率:50%
帮助的人:547万
展开全部
@ECHO OFF&Setlocal EnableDelayedExpansion
:1
set /p z=s输入去掉字符个数:
set /a y=1%z%1||goto 1
for /d %%i in (*) do (set a=%%i
set b=!a:~%z%!
echo %%i !b!
)
pause
_________________________________________________
@ECHO Off&Setlocal EnableDelayedExpansion
:1
set /p z=s输入去掉字符个数:
set /a y=1%z%1||goto 1
for /d %%i in (*) do (set a=%%i
set b=!a:~0,-%z%!
echo %%i !b!
)
pause
_________________________________________________
@ECHO On
for /f tokens^=1^,2^,*^ delims^=^- %%i in ('dir /ad /b *') do echo %%i-%%j %%i
pause
_________________________________________________
@ECHO On
for /f tokens^=1^,2^,*^ delims^=^[ %%i in ('dir /ad /b *') do echo %%i-%%j %%i
pause
_________________________________________________
追问

感谢您的帮忙。我测试了一个您写的程序。

  1. 没有问题,我把echo 换成了ren ,不过需要加个引号,因为目录名有空格,ren "%%i" "!b!"。运行没有问题。

  2. 也没有问题,也是要加引号,同上。

  3. 这个运行不成功。

  4. 这个也是运行不成功。

    谢谢你的帮忙。看能不能再修改一下。谢谢!

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式