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

[文件操作] 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. )
复制代码

回复 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

TOP

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

TOP

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

TOP

本帖最后由 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
复制代码

TOP

返回列表