Board logo

标题: [文本处理] 【已解决】BAT批处理命令for替换字符串中的字符出现问题? [打印本页]

作者: wangxiaodong    时间: 2014-4-4 05:36     标题: 【已解决】BAT批处理命令for替换字符串中的字符出现问题?

本帖最后由 wangxiaodong 于 2014-4-4 16:52 编辑
  1. @echo off
  2. for /f "delims=" %%i in ('dir /a–d/b /s ')  do (set "str=%%~ni"
  3. setlocal enabledelayedexpansion
  4. ren "%%i" "!str:0=!%%~xi"
  5. endlocal)
复制代码
出现以下问题:
1.本意是删除所有0,但好像是0被替换为空格。空格是如何出来的?
2.如何避免对批处理文件本身操作。
作者: DAIC    时间: 2014-4-4 10:03

  1. @echo off
  2. for /f "delims=" %%i in ('dir /b /s /a-d') do (
  3.     if "%%i" neq "%~f0" (
  4.         set "str=%%~ni"
  5.         setlocal enabledelayedexpansion
  6.         echo ren "%%i" "!str:0=!%%~xi"
  7.         endlocal
  8.     )
  9. )
复制代码

作者: DAIC    时间: 2014-4-4 10:05

注意,你的代码里面 /a-d 中间那个减号写错了。
作者: wangxiaodong    时间: 2014-4-4 12:20

多谢!细看了下,0被替换成空格的原因是set str=%%~ni后面有空格,但本身没加双引号2# DAIC
作者: wangxiaodong    时间: 2014-4-4 12:26

再麻烦下大哥。if语句不是可以用if string1==string2吗?为什么不用if "%%i"=="%0",而是用"%%i" equ "%~f0"?2# DAIC
作者: DAIC    时间: 2014-4-4 12:31

回复 5# wangxiaodong


    个人爱好
作者: wangxiaodong    时间: 2014-4-4 12:37

哦,两种表达方式一样。谢谢6# DAIC




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