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

[文本处理] 【已解决】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.如何避免对批处理文件本身操作。
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

  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. )
复制代码
1

评分人数

TOP

注意,你的代码里面 /a-d 中间那个减号写错了。

TOP

多谢!细看了下,0被替换成空格的原因是set str=%%~ni后面有空格,但本身没加双引号2# DAIC

TOP

再麻烦下大哥。if语句不是可以用if string1==string2吗?为什么不用if "%%i"=="%0",而是用"%%i" equ "%~f0"?2# DAIC

TOP

回复 5# wangxiaodong


    个人爱好

TOP

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

TOP

返回列表