返回列表 发帖
回复 30# smatenchen


    @echo off
set "self=%~nx0"
rename 1.txt aabb____1.txt
rename 2.log aabb____2.log
for /f "delims=" %%i in ('dir /b /a-d *aabb*.*') do rename "%%i" "aabb____%%i"

for %%i in (*) do (
set str=%%i
setlocal enabledelayedexpansion
if "!str:~0,4!" neq "aabb" (
if "!str!" neq "!self!" (
del "!str!"
)
)
endlocal
)

for %%i in (*) do (
set str=%%i
setlocal enabledelayedexpansion
if "!str!" neq "!self!" rename "!str!" "!str:~7!"
endlocal
)

TOP

回复 31# Five66


    啊,顺序搞错了
rename 1.txt aabb____1.txt
rename 2.log aabb____2.log
for /f "delims=" %%i in ('dir /b /a-d *aabb*.*') do rename "%%i" "aabb____%%i"

换成

for /f "delims=" %%i in ('dir /b /a-d *aabb*.*') do rename "%%i" "aabb____%%i"

rename 1.txt aabb____1.txt
rename 2.log aabb____2.log

TOP

回复 31# Five66

回复 32# Five66
   

感谢!

1,
你也发现了这个顺序bug。

2,
【if "!str!" neq "!self!" rename "!str!" "!str:~7!"】里的【"!str:~7!"】应该改成【"!str:~8!"】。

3,
代码这么多,不简捷,肯定不如【if "!str!" equ "!str:aabb=!"】的方案。不实用,探讨,拓展一下方案还行。

TOP

是只要纯批的?就判断3个条件而已,or一下就行。
19  20 的不简洁吗

TOP

powershell不够简洁吗
powershell -c "Remove-Item * -Exclude 1.txt,2.log,*aabb*, '%~nx0'"COPY

TOP

回复 34# pd1

回复 35# terse
   

感谢!

1,
纯批的感觉很舒服,的确是简单判断3个条件就行了,我之前想得复杂了。

2,
powershell的更简捷,可惜我还没学,不会用啊!

TOP

返回列表