求批处理改文件夹名称,删除文件夹名称中前10个字符和删除文件名称中后8个字符等功能
发布网友
发布时间:2022-04-26 08:48
我来回答
共2个回答
热心网友
时间:2023-10-09 02:13
你好,你上面说的那个批处理不是不能处理空格的文件,只是缺少了英文状态的双引号而已
前面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
热心网友
时间:2023-10-09 02:14
@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!"。运行没有问题。
也没有问题,也是要加引号,同上。
这个运行不成功。
这个也是运行不成功。
谢谢你的帮忙。看能不能再修改一下。谢谢!