标题: [文件操作] BAT批处理如何重命名文件夹名带感叹号的文件 [打印本页]
作者: changedirectory 时间: 2014-1-26 10:00 标题: BAT批处理如何重命名文件夹名带感叹号的文件
如果一个文件夹名含有一些特殊字符,如!,如何重命名?
当前的目录下有个文件夹12344!111,如何改成123111,使用下面的命令不成功。- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /ad /b') do (
- set a=%%a
- set a=!a:44!=!
- ren "%%a" !a!
- )
复制代码
作者: apang 时间: 2014-1-26 10:59
本帖最后由 apang 于 2014-1-26 11:25 编辑
如果仅仅是删除叹号,可以这样:- @echo off
- for /f "delims=" %%a in ('dir /ad /b *!*') do (
- set "a=%%a"
- setlocal enabledelayedexpansion
- echo ren "!a!" "%%a"
- endlocal
- )
- pause
复制代码
看错了,这样试试- @echo off
- for /f "delims=" %%a in ('dir /ad /b *!*') do (
- set "name=%%a"
- call set "name=%%name:44!=%%"
- call Ren "%%a" "%%name%%"
- )
- pause
复制代码
作者: terse 时间: 2014-1-26 15:57
- @echo off
- for /d %%i in (*!*) do (
- set "a=%%i"
- setlocal enabledelayedexpansion
- for /f "tokens=1,2delims=:" %%a in ("!a!:!a:44!=!") do (
- endlocal&if "%%a" neq "%%b" ren "%%a" "%%b"
- )
- )
- pause
复制代码
作者: changedirectory 时间: 2014-3-2 19:53
回复 2# apang
如果是文件夹中其他的一些特殊符号,如(),怎么去掉?
如果当前目录下有一些文件夹,这些文件夹下的一些文件夹有一些特殊符号,如(),dir /ad /b "%%a" 这里会出错,正常的应该怎么写?谢谢!- for /f "delims=" %%a in ('dir /ad /b') do (
- for /f "delims=" %%b in ('dir /ad /b "%%a"') do (
- echo %%b
- )
- )
复制代码
作者: zhanglei1371 时间: 2014-3-3 11:16
回复 4# changedirectory
我电脑运行就可以啊,估计你之前肯定加了setlocal enabledelayedexpansion,去掉就行了,如目录结构:
c:\12\(123)!!!000111\123000111
运行代码:- @echo off
- pushd c:\12
- for /f "delims=" %%a in ('dir /ad /b') do (
- echo %%a
- pause
- for /f "delims=" %%b in ('dir /ad /b "%%a"') do (
- echo %%b
- )
- )
复制代码
结果:
(123)!!!000111
请按任意键继续. . .
123000111
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |