Board logo

标题: [文件操作] BAT批处理如何重命名文件夹名带感叹号的文件 [打印本页]

作者: changedirectory    时间: 2014-1-26 10:00     标题: BAT批处理如何重命名文件夹名带感叹号的文件

如果一个文件夹名含有一些特殊字符,如!,如何重命名?

当前的目录下有个文件夹12344!111,如何改成123111,使用下面的命令不成功。
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('dir /ad /b') do (
  3.    set a=%%a
  4.    set a=!a:44!=!
  5.    ren "%%a" !a!
  6. )
复制代码

作者: apang    时间: 2014-1-26 10:59

本帖最后由 apang 于 2014-1-26 11:25 编辑

如果仅仅是删除叹号,可以这样:
  1. @echo off
  2. for /f "delims=" %%a in ('dir /ad /b *!*') do (
  3.    set "a=%%a"
  4.    setlocal enabledelayedexpansion
  5.    echo  ren "!a!" "%%a"
  6.    endlocal
  7. )
  8. pause
复制代码
看错了,这样试试
  1. @echo off
  2. for /f "delims=" %%a in ('dir /ad /b *!*') do (
  3.     set "name=%%a"
  4.     call set "name=%%name:44!=%%"
  5.     call Ren "%%a" "%%name%%"
  6. )
  7. pause
复制代码

作者: terse    时间: 2014-1-26 15:57

  1. @echo off
  2. for /d %%i in (*!*) do (
  3.     set "a=%%i"
  4.     setlocal enabledelayedexpansion
  5.     for /f "tokens=1,2delims=:" %%a in ("!a!:!a:44!=!") do (
  6.         endlocal&if "%%a" neq "%%b" ren "%%a" "%%b"
  7.     )
  8. )
  9. pause
复制代码

作者: changedirectory    时间: 2014-3-2 19:53

回复 2# apang


    如果是文件夹中其他的一些特殊符号,如(),怎么去掉?
如果当前目录下有一些文件夹,这些文件夹下的一些文件夹有一些特殊符号,如(),dir /ad /b "%%a" 这里会出错,正常的应该怎么写?谢谢!
  1. for /f "delims=" %%a in ('dir /ad /b') do (
  2.    for /f "delims=" %%b in ('dir /ad /b "%%a"') do (
  3.      echo %%b
  4.   )
  5. )
复制代码

作者: zhanglei1371    时间: 2014-3-3 11:16

回复 4# changedirectory


    我电脑运行就可以啊,估计你之前肯定加了setlocal enabledelayedexpansion,去掉就行了,如目录结构:
c:\12\(123)!!!000111\123000111
运行代码:
  1. @echo off
  2. pushd c:\12
  3. for /f "delims=" %%a in ('dir /ad /b') do (
  4. echo %%a
  5. pause
  6.    for /f "delims=" %%b in ('dir /ad /b "%%a"') do (
  7.      echo %%b
  8.   )
  9. )
复制代码
结果:
(123)!!!000111
请按任意键继续. . .
123000111




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