返回列表 发帖
1、2、

[ 本帖最后由 tireless 于 2008-12-18 08:05 编辑 ]
tireless 发表于 2008-12-17 22:53


我试了下上边的所有脚本会导致文件名-左右删字符
如:AAA-BBB  会生成 BB-AA
然而我们需要的是生成BBB-AAA

以下提供可用脚本
@echo off&setlocal EnableDelayedExpansion  
for /f "tokens=1,2 delims=-." %%a in ('dir /b *.mp3') do (
set var=%%a
::去除var变量左边第一个空格
if "!var:~0,1!"==" " set var=!var:~1!
if "!var:~0,1!"==" " set var=!var:~1!
if "!var:~0,1!"==" " set var=!var:~1!
if "!var:~0,1!"==" " set var=!var:~1!
if "!var:~0,1!"==" " set var=!var:~1!
if "!var:~0,1!"==" " set var=!var:~1!
if "!var:~0,1!"==" " set var=!var:~1!
if "!var:~0,1!"==" " set var=!var:~1!
::去除var变量右边第一个空格
if "!var:~-1!"==" " set var=!var:~0,-1!
if "!var:~-1!"==" " set var=!var:~0,-1!
if "!var:~-1!"==" " set var=!var:~0,-1!
if "!var:~-1!"==" " set var=!var:~0,-1!
if "!var:~-1!"==" " set var=!var:~0,-1!
if "!var:~-1!"==" " set var=!var:~0,-1!
if "!var:~-1!"==" " set var=!var:~0,-1!
if "!var:~-1!"==" " set var=!var:~0,-1!
set jar=%%b
::去除jar变量左边第一个空格
if "!jar:~0,1!"==" " set jar=!jar:~1!
if "!jar:~0,1!"==" " set jar=!jar:~1!
if "!jar:~0,1!"==" " set jar=!jar:~1!
if "!jar:~0,1!"==" " set jar=!jar:~1!
if "!jar:~0,1!"==" " set jar=!jar:~1!
if "!jar:~0,1!"==" " set jar=!jar:~1!
if "!jar:~0,1!"==" " set jar=!jar:~1!
if "!jar:~0,1!"==" " set jar=!jar:~1!
::去除jar变量右边第一个空格
if "!jar:~-1!"==" " set jar=!jar:~0,-1!
if "!jar:~-1!"==" " set jar=!jar:~0,-1!
if "!jar:~-1!"==" " set jar=!jar:~0,-1!
if "!jar:~-1!"==" " set jar=!jar:~0,-1!
if "!jar:~-1!"==" " set jar=!jar:~0,-1!
if "!jar:~-1!"==" " set jar=!jar:~0,-1!
if "!jar:~-1!"==" " set jar=!jar:~0,-1!
if "!jar:~-1!"==" " set jar=!jar:~0,-1!
::重命名文件
ren "%%a-%%b.mp3" "!jar!-!var!.mp3"
)COPY
1

评分人数

    • impk: 这个是正确答案技术 + 1

TOP

回复 16# smss

微软给我们的 WINDOWS 提供了更好的工具不用,还要这么绕脑。

Powershell :
$a -replace '\s+','' -replace '(.*)-(.*)\.(.*)','$2 - $1.$3'COPY

TOP

本帖最后由 smss 于 2018-12-30 16:28 编辑
回复  smss

微软给我们的 WINDOWS 提供了更好的工具不用,还要这么绕脑。

Powershell :
xczxczxcz 发表于 2018-12-24 18:09


测试无效

TOP

回复 18# smss


    操作系统什么版本?PowerShell什么版本?把你的测试用例和测试结果发出来看看吧
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复  smss


    操作系统什么版本?PowerShell什么版本?把你的测试用例和测试结果发出来看看吧
Batcher 发表于 2018-12-30 17:09



TOP

回复 20# smss

首先这句脚本写的是改名的正则表达式,没有文件浏览。它当然不能产生任何作用。

看图片,你的系统好像是 win10。WIN7以上自带PWOERSHELL。无需复制PS程序。可以在PS窗口或用PS脚本直接运行。

如修改你的 图片所示的RAR文件。
dir *.rar | ren -newname {$_.name -replace '\s+','' -replace '(.*)-(.*)\.(.*)','$2-$1.$3'} -verb
cmd /c "echo;&pause"COPY
元旦太冷。
1

评分人数

    • ivor: powershell 比较方便技术 + 1

TOP

本帖最后由 smss 于 2019-1-2 21:59 编辑
回复  smss

首先这句脚本写的是改名的正则表达式,没有文件浏览。它当然不能产生任何作用。

看图片, ...
xczxczxcz 发表于 2019-1-1 20:09


无论在BAT中还是PowerShell中都无效

TOP

回复 22# smss

老大,你先确定好工作目录行不行?CD /D ?

TOP

本帖最后由 miqilaosu 于 2019-6-10 16:39 编辑
echo off
setlocal enabledelayedexpansion
for /f "tokens=1,2 delims=-" %%i in ('dir /a-d /b "*-*.*"') do (
ren "%%i-%%~nxj" "!str2! - !str1!%%~xj"
)
pauseCOPY
新人交作业


……………………………………………………………………………………………………………………
if "!str1:~0,-1!"==" " call  set /a "str1=!str1:~0,-1!"COPY
为什么我替换时数字没问题汉字就出错了

TOP

刚开始学,真的看不懂,还得努力才行

TOP

回复 10# zgq0301

代码有问题,更名后,文件名带空格。

TOP

本帖最后由 impk 于 2019-8-23 13:05 编辑
@echo off
for %%a in ( *.mp3 ) do (
for /f "tokens=1,2 delims=-. " %%i in ( "%%a" ) do ( ren "%%a" "%%j - %%i.mp3" )
)
pauseCOPY
这样写不对,如【Mirror Mirror - M2M.mp3】这种歌名里有空格的,这批处理就无效
16楼是正确答案

TOP

本帖最后由 impk 于 2019-8-23 13:18 编辑
@echo off
setlocal EnableDelayedExpansion  
for /f "tokens=1,2 delims=-." %%a in ( 'dir /b *.mp3' ) do (
set vara=%%a
if "!vara:~0,1!"==" " set vara=!vara:~1!
if "!vara:~-1!"==" " set vara=!vara:~0,-1!
set varb=%%b
if "!varb:~0,1!"==" " set varb=!varb:~1!
if "!varb:~-1!"==" " set varb=!varb:~0,-1!
ren "%%a-%%b.mp3" "!varb! - !vara!.mp3"
)
pauseCOPY

TOP

为什么都只改4个文件就停了

TOP

回复 8# leaparde
大佬是直接复制编辑bat文件就可以用吗咋用没研究明白😊

TOP

返回列表