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

[文件操作] 批处理怎样在文件名两边/首尾添加指定前缀后缀/字符串?

本帖最后由 pcl_test 于 2016-9-3 19:37 编辑

想要实现为一批文件批量添加前缀,所以研究了一下批处理,先上代码:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. echo "请输入所要添加的标题前缀[不添请回车]"
  4. set /p str1=
  5. echo "请输入所要添加的标题后缀[不添请回车]"
  6. set /p str2=
  7. :chose
  8. echo "是否应用到子文件夹中(Y/N)"
  9. set /p cho=
  10. if "%cho%"=="Y" goto 1
  11. if "%cho%"=="y" goto 1
  12. if "%cho%"=="N" goto 2
  13. if "%cho%"=="n" (goto 2) else (goto chose)
  14. :1
  15. for /f "delims=" %%i in ('dir /a-d/b/s') do (if not "%%i"==%0 ren "%%i" "%str1%%%~ni%str2%%%~xi")
  16. goto 3
  17. :2
  18. for /f "delims=" %%i in ('dir /a-d /b *.*') do (if not "%%i"==%0 ren "%%i" "%str1%%%~ni%str2%%%~xi")
  19. goto 3
  20. :3
  21. pause
复制代码
运行基本正确,但是:2部分还是修改批处理文件本身的文件名,也就是
  1. if not "%%i"==%0
复制代码
这个判断失效,我将%%i和%0打印出来发现%0是完整路径。在下新手,不知道这个如何解决,还望高手指点。

本帖最后由 hrhktkbzyy 于 2011-4-15 11:31 编辑

2# hanyeguxing
谢谢版主,查了一下帮助,明白版主的意思了。问题解决,现在贴上代码:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. echo "请输入所要添加的标题前缀[不添请回车]"
  4. set /p str1=
  5. echo "请输入所要添加的标题后缀[不添请回车]"
  6. set /p str2=
  7. :chose
  8. echo "是否应用到子文件夹中(Y/N)"
  9. set /p cho=
  10. if "%cho%"=="Y" goto 1
  11. if "%cho%"=="y" goto 1
  12. if "%cho%"=="N" goto 2
  13. if "%cho%"=="n" (goto 2) else (goto chose)
  14. :1
  15. for /f "delims=" %%i in ('dir /a-d/b/s') do (if /i not "%%~fi"=="%~f0" ren "%%i" "%str1%%%~ni%str2%%%~xi")
  16. goto 3
  17. :2
  18. for /f "delims=" %%i in ('dir /a-d /b *.*') do (if /i not "%%~fi"=="%~f0" ren "%%i" "%str1%%%~ni%str2%%%~xi")
  19. goto 3
  20. :3
  21. pause
复制代码

TOP

本帖最后由 hrhktkbzyy 于 2011-4-15 11:26 编辑

2# hanyeguxing

另外还想探讨一个问题,就是如果我想删除一些前后缀如何实现呢。我的思路是读出每一个文件名,%%~ni,然后赋值给字符串变量,再操作字符串,但是第一步我没有成功,测试如下:
  1. for /F "delims=" %%i in ('dir /b') do (set a="%%~nxi"&&echo %a%)
复制代码
显示echo处于关闭状态

TOP

5# hanyeguxing
不知版主测试如何,我测试的不行,输出!a!而不是a的内容
  1. @echo off
  2. for /F "delims=" %%i in ('dir /b') do (set a="%%~nxi"&echo;!a!)
  3. pause
复制代码

TOP

7# hanyeguxing 谢谢版主的回复,这个论坛很好,我还要多多学习。

TOP

返回列表