[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 qixiaobin0715 于 2021-5-13 21:42 编辑

未经测试
  1. @echo off
  2. set var=山东 广州 四川
  3. setlocal enabledelayedexpansion
  4. for /f "delims=" %%a in ('dir /b /s /a-d') do (
  5.     set "str=%%~na"
  6.     set n=0
  7.     for %%a in (%var%) do (
  8.         set /a n+=1
  9.         if not "!str!"=="!str:%%a=!" ren "%%a" "0!n!.!str!%%~xa"
  10.     )
  11. )
  12. pause
复制代码

TOP

当前目录下运行正确,已测试
子目录 其他目录 自己修改一下

TOP

回复 7# newswan


    非常感谢,但是运行还是不成功。

TOP

回复 6# rockjean


    是的,但是不能改表原始文件名,只是在原始文件名前面加前缀。这个前缀按照规则,比如01.山东;02.广州,

TOP

回复  newswan


   感谢帮助,但是 运行下来,不行
ngb0519 发表于 2021-5-13 13:27
  1. @echo off
  2. chcp 936
  3. setlocal enableDelayedExpansion
  4. set str=01 山东 02 四川
  5. for /f "usebackq tokens=* delims=" %%a in (` dir /b *.docx `) do (
  6.     call :f1 "%%a" %str%
  7. )
  8. goto :END
  9. rem %0 %str% index
  10. :f1
  11. if not "%2"=="" (
  12.     echo %1 | findstr /r "^[^0-9]*%3" >nul
  13.     if !errorlevel!==0 (
  14.         echo "%~1" "%2_%~1"
  15.         goto :eof
  16.     )
  17.     shift /2 & shift /2
  18.     goto :f1
  19. )
  20. goto :eof
  21. :END
复制代码

TOP

回复 5# ngb0519


    你的意思是把所有含山东关键字的文件,全部在前面加编号01,含有广州的文件,加编号02,含有四川的文件,加编号03,这个意思吧?
洛克坚

TOP

回复 4# newswan


   感谢帮助,但是 运行下来,不行

TOP

本帖最后由 newswan 于 2021-5-13 13:26 编辑
  1. @echo off
  2. setlocal enableDelayedExpansion
  3. set str=01 山东 02 四川
  4. call :f1  库存表-四川.docx %str%
  5. goto :END
  6. :f1
  7. if not "%2"=="" (
  8.     echo %1 | findstr /r "^[^0-9]*%3" >nul
  9.     if !errorlevel!==0 (
  10.         echo %1 %2_%1
  11.         goto :eof
  12.     )
  13.     shift /2 & shift /2
  14.     goto :f1
  15. )
  16. goto :eof
  17. :END
复制代码
如果正确 把 echo 改成 ren
个人习惯,. 表示扩展名, 文件名中用 - _

TOP

回复 2# rockjean



    感谢大神的帮助,但是我运行了一下:
1、批处理前:库存表—山东.docx
2、批处理后:01山东东.docx
3、批处理文件是这样的:ren 山东*.* 01山东*.*
                      ren *山东.* 01山东*.*


4、运行后改变了原始文件名!我的想法是:如何在不改变原始文件名的前提下,根据文件名的关键词,在文件名前加特定前缀。
比如,
批处理前文件名是这样:山东销售情况
批处理后文件名是这样:01、山东销售情况

TOP

回复 1# ngb0519


    这个很简单哦,用重命名命令就可以了:
    ren 山东*.* 01山东*.*
    ren 广州*.* 02广州*.*
    ren 四川*.* 03四川*.*

诸如此类,试验的时候可以先备份一下文件夹。
洛克坚

TOP

返回列表