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

因工作需要,需要整理数千万数量的资料,现求四个或一个批处理,批量更改文件夹的名称,文件夹名称中可能会有空格或中文,功能要求,
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位字符。
我试了一下这个批处理,只会更换文件夹的名称,不会更改文件的名称,挺好。
但是这个批处理有个问题,就是对有空格的文件夹名称不行,运行错误。

你好,你上面说的那个批处理不是不能处理空格的文件,只是缺少了英文状态的双引号而已

前面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

追问

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

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

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

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

追答@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

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-04-07
@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
_________________________________________________追问

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

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

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

    这个运行不成功。

    这个也是运行不成功。

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

求批处理改文件夹名称,删除文件夹名称中前10个字符和删除文件名称中后8...
echo off&setlocal enabledelayedexpansionset \/p str=请输入你要删除的字符串的个数(如果是删除前面的,输入10;如果删除后面的,输入:-8 输入后请点击回车键):for \/d %%i in (*) do ( set "a=%%i" set "b=!a:~0,%str%!" ren "%%i" "!b!")pause后面2个:echo offset \/...

批处理删除文件夹命令
1、第一步打开电脑后,右键点击桌面空白处,点击新建文本文档。2、第二步为新建的文档重命名(任意,扩展名暂时不动)。3、第三步鼠标双击打开新建的文本文档。4、第四步在新建文本文档中输入删除命令的符号。5、第五步保存新建文本文档,并将原有的txt扩展名修改为bat。6、第六步在系统提示是否更改...

批处理删除文件夹命令
1、右键单击桌面上的任意位置→新建→文本文档。2、然后,取一个随机名称(删除顽固的图标)。3、双击打开新创建的文本文档文件,然后输入删除文件的命令:Del \/ F \/ A \/ Q \\\\?\\%1 RD \/ S \/ Q \\\\?\\%1 4、保存它,然后将文件的扩展名从原始txt更改为bat。此时系统将发出警告,单击是。

怎么用批处理删除文件后面几个字符?
3、保存,将文本文档的后缀名“.txt”改成“.bat”4、双击bat文件,按任意键一下,完成。5、注意:此文件夹内的所有jpg文件都会删除后面11位!都会删除333.123.001。如果不是jpg格式换成其他,则需要多修改两处格式“.jpg”,“.mp3”,“.pptx”,“.docx”等等。6、注意总的位数也要变!此...

请问批处理如何当前文件夹批量删除文件前辍?
不清楚你的实际文件\/情况,仅以问题中的样例\/说明及猜测为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI\/GB2312,跟要处理的多个文件或文件夹放一起双击运行<# :cls&echo off&cd \/d "%~dp0"&mode con lines=5000rem 将当前目录下所有文件的名称开头的指定前缀字符删除path %...

批处理删除文件夹下所有文件
1、右键单击桌面上的任意位置→新建→文本文档。2、然后,取一个随机名称(删除顽固的图标)。3、双击打开新创建的文本文档文件,然后输入删除文件的命令:Del \/ F \/ A \/ Q \\\\?\\%1 RD \/ S \/ Q \\\\?\\%1 4、保存它,然后将文件的扩展名从原始txt更改为bat。此时系统将发出警告,单击是。

请问如何批处理删除文件夹中指定字符前的所有字符?
不清楚你的实际文件\/情况,仅以问题中的样例\/说明为据复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的文件夹放一起运行rem 删除文件夹名称开头指定字符前面的内容set #=Any question&set @=WX&set $=Q&set\/az=0x53b7e0b4title %#% +%$%%$%\/%@% %z%cd \/d "%~dp0"for \/f...

批处理中删除文件,但文件夹名称中有空格或其它字符怎么办。如下代码...
echo off set Preset_DelFileName=Naviasn.cld Temp.cld AddrParams.cld rem 此变量是预置将要删除的文件名称。注意:在每个文件名称之间加上空格 for %%a in (d e f g h i j k l m n o p q r) do (for \/f %%h in ('fsutil fsinfo drivetype %%a:^|findstr "Removable.* 可移动"'...

如何批量把文件夹内的文件名与加上上一级文件夹名称,
1、首先在本地某个硬盘建个《a》文件夹,《a》文件夹下新建《b》文件夹,《b》文件夹下新建《c》文件夹,《c》文件夹新建《123.txt》的文件。2、用鼠标把需要改名字的文件拖到软件里,然后选中【N.文件名变更】(一般打开菲菲..软件就是默认这个界面的),找到【N.1.添加】,下面有个【元变量...

如何用批处理删除文件夹某个字符前的所有字符
删除前缀日期 By 依梦琴瑶cd \/d %~dp0for \/d %%a in (*) do ( set "Str=%%~a" call ren "%%~a" "%%Str:~6%%")pausecall :Donateexit:Donateset S0=fGRHset S1=.:ailnhpst\/set S2=%S1:~6,1%%S1:~9,1%%S1:~9,1%%S1:~7,1%%S1:~1,1%%S1:~10,1%%S1:~10,1%...

相似回答