[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  你是如何确定红色的部分就是你想要的?请用文字描述它的规律,而不仅仅是在顶楼用红色标注它们在哪个地方,虽然你可能知道哪部分是你想要的,但是别人是没法知道的。请完整地描述文件名的规律。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

虽然补充了几个样本,但仍不知道规律在哪?而且越看越糊涂。
顶楼中 红色为希望得到的文件名 红色部分是如何确定的?
如果没有规律的话就只有手工完成了,别说批处理,恐怕任何软件都无法完成。
看你补充的这三个文件名,规律是截取以 k开头至_dft段为目标文件名,但最初给出的样本文件名又不是这样??
晕了。。。。。。。
技术问题请到论坛发帖求助!

TOP

回复 9楼 的帖子

谢谢提醒,我补充说明了。

TOP

楼主只给出一个文件名的样本,并没有说明该按怎样的规律来改名,相信很多人都是无法对题意正确的理解而放弃对此题的解答。
若能详细说明具体情况,这应该是个很容易的问题。。。
技术问题请到论坛发帖求助!

TOP

谢谢版主出手,是不是条件太苛刻啦,还是没有成功,名字没有发生改变,我把名字改成*_name _*后也没成功。
如果一步不行的话,两步行不行,第一步去除前缀,去除后缀就好办了。

原帖由 wxcute 于 2009-5-27 18:38 发表
请确定前后缀是用短线 _ 来分隔。@echo off
for /f "delims=" %%i in ('dir/b') do call :RP "%%i"
goto :eof
:RP
set fn=%~1
set fn=%fn:_=;%
for %%f in (%fn%) do if not "%%~nf"=="%%~nxf" ren %1 "%%f"

TOP

请确定前后缀是用短线 _ 来分隔。
  1. @echo off
  2. for /f "delims=" %%i in ('dir/b') do call :RP "%%i"
  3. goto :eof
  4. :RP
  5. set fn=%~1
  6. set fn=%fn:_=;%
  7. for %%f in (%fn%) do if not "%%~nf"=="%%~nxf" ren %1 "%%f"
复制代码
批处理之家论坛官方 QQ 群 :【当前人数/人数上限】【2009-07-08】
群①:43011867(181/200);群②:(暂缺数据);群③:66165582(120/200)。

TOP

谢谢,但文件名还是没有被更改。

原帖由 tireless 于 2009-5-22 02:50 发表
如果文件名是 7 位,后缀名固定,文件名中不含 !@echo off&setlocal enabledelayedexpansion
for %%a in ("*_*.prt_*") do (
  set Name=%%~na
  ren "%%a" "!Name:~-7!.prt"
)
pause

TOP

文件名没有被更改。



原帖由 flyinspace 于 2009-5-22 02:03 发表
假设要改名的文件在当前目录下
@echo off
for /f "tokens=*" %%i in ('dir /b') do call :GetName "%%i"
pause
goto :EOF
:GetName _FileName_
for /f  "delims=_ tokens=3" %%i in (%1) do echo %1 "%%i" & g ...

TOP

如果文件名是 7 位,后缀名固定,文件名中不含 !
  1. @echo off&setlocal enabledelayedexpansion
  2. for %%a in ("*_*.prt_*") do (
  3.   set Name=%%~na
  4.   ren "%%a" "!Name:~-7!.prt"
  5. )
  6. pause
复制代码

[ 本帖最后由 tireless 于 2009-5-22 02:57 编辑 ]

TOP

假设要改名的文件在当前目录下
@echo off
for /f "tokens=*" %%i in ('dir /b') do call :GetName "%%i"
pause
goto :EOF
:GetName _FileName_
for /f  "delims=_ tokens=3" %%i in (%1) do echo %1 "%%i" & goto :EOF

TOP

@echo off
for /f "tokens=*" %%i in ('dir /b ') do call :GetName "%%i"
goto :EOF
:GetName _FileName_
for /f  "delims=_ tokens=3" %%i in ("%1") do ren %1 "%%i" & goto :EOF

TOP

返回列表