Board logo

标题: [文件操作] BAT怎样批量给文件按当前视图的顺序添加“前缀(序号)”? [打印本页]

作者: xzwcn    时间: 2013-9-15 15:58     标题: BAT怎样批量给文件按当前视图的顺序添加“前缀(序号)”?

如A文件夹中有文件如下排列:
A.XXX
B.XXX
C.XXX
D.XXX
........
Z.XXX

运行批处理后,实现的效果:
01.A.XXX
02.B.XXX
03.C.XXX
04.D.XXX
........
n.Z.XXX

注意:文件名中可能会包含“!”号,要处理。
参考:
【已解决】_批处理命令ren执行时遇到感叹号时报错如何解决呢? - BAT求助&讨论 - 批处理之家 批处理_BAT_CMD_DOS_VBS_Perl_Python_PowerShell - Powered by Discuz!
http://www.bathome.net/viewthrea ... p;extra=&page=1
作者: weichenxiehou    时间: 2013-9-15 16:38

本帖最后由 weichenxiehou 于 2013-9-15 17:16 编辑

回复 1# xzwcn
将以下批处理放到该目录下运行即可,可以正确处理文件名带感叹号的文件。楼主可说的是只处理文件哦,可不包括文件夹哦。还有按照你的意思,文件的个数不能多于99个。
  1. @echo off
  2. set n=100
  3. for /f "delims=" %%a in ('dir/a-d /b') do (
  4.   if not "%%a"=="%~nx0" (
  5.     set "str=%%a"&set/a n+=1
  6.     setlocal enabledelayedexpansion
  7.     ren "!str!" "!n:~-2!.!str!"
  8.     endlocal
  9.   )
  10. )
复制代码

作者: xzwcn    时间: 2013-9-17 16:44

回复 2# weichenxiehou

谢谢提醒!
如果要按当前视图顺序添加,要怎样修改呢?
如:
一文件夹的当前视图排列情况是这样的:
D.TXT
A.TXT
B.TXT
L.TXT
运行上面的代码后,结果变为:
01.A.TXT
02.B.TXT
03.C.TXT
04.L.TXT
但这不是我想要的结果,我希望的结果是这样的:
01.D.TXT
02.A.TXT
03.B.TXT
04.L.TXT
这样的效果能做到么?

(应用背景:有时候按字母或数据排列的顺序并非我们想要的)
作者: DAIC    时间: 2013-9-17 16:46

回复 3# xzwcn


那你得说清楚当前视图是按照什么属性排序的
大小?日期?
作者: xzwcn    时间: 2013-9-17 16:59

回复 4# DAIC

这个要看情况的。。可不可以自动识别到当前是什么方式排序呢?系统的---文件夹选项--查看---文件夹选项,是可以“自动"识别当前视图的,

不知道这个在DOS能不能实现。
作者: xzwcn    时间: 2014-4-25 11:15

回复  xzwcn
将以下批处理放到该目录下运行即可,可以正确处理文件名带感叹号的文件。楼主可说的是只处理 ...
weichenxiehou 发表于 2013-9-15 16:38



    如果不保留原有命名,要怎么操作呢?
如:
一文件夹的当前视图排列情况是这样的:
D.TXT
A.TXT
B.TXT
L.TXT
运行上面的代码后,结果变为:
01.TXT
02.TXT
03.TXT
04.TXT
作者: Batcher    时间: 2014-4-25 13:18

回复 6# xzwcn
  1. @echo off
  2. set n=100
  3. for /f "delims=" %%a in ('dir /a-d /b') do (
  4.     if not "%%a"=="%~nx0" (
  5.         set "str=%%a"
  6.         set /a n+=1
  7.         setlocal enabledelayedexpansion
  8.         ren "!str!" "!n:~-2!%%~xa"
  9.         endlocal
  10.     )
  11. )
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2