标题: [文件操作] 批处理重命名文件名带空格的文件报错“命令语法不正确”如何解决 [打印本页]
作者: kingerpk 时间: 2009-2-4 22:10 标题: 批处理重命名文件名带空格的文件报错“命令语法不正确”如何解决
本帖最后由 pcl_test 于 2016-8-4 12:29 编辑
我在e:\1下建了 :
新建 文本文档.txt
新建 文本文档(2).txt
新建 文本文档(3).txt
新建 文本文档(4).txt
几个文本文件,想用批处对其改名,- for /f "delims=" %%a in ('dir/b e:\1') do (
- set b=%%a
- set c=!b:~3,4!
- ren %%a !c!
- )
- pause
复制代码
但其运行结果却是:
命令语法不正确。
请按任意键继续. . .
为什么 啊~~~~~
是不是因为有空格的原因?
要怎么改进?请大家指点指点!!谢谢!!!
[ 本帖最后由 kingerpk 于 2009-2-4 22:13 编辑 ]
作者: yslyxqysl 时间: 2009-2-4 22:17
http://www.bathome.net/thread-3222-1-4.html
作者: kingerpk 时间: 2009-2-4 23:05
还有问题~~~~~~~~~~~
文件:论坛发帖规则 - 论坛总版规 - 批处理之家 批处理,bat,dos教程,论坛,代码 - Powered by Discuz!.txt
我用以下代码进行改名:- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir/b E:\临时文件夹\2\*.txt') do (
- set b=%%a
- set c=!b:批处理之家 批处理,bat,dos教程,论坛,代码 - Powered by Discuz=批处理之家!
- ren "%%a" "!c!"
- )
- pause
复制代码
但是结果和前面一样啊~~~~~
为什么~~~~~
还有若把ren "%%a" "!c!" 中的%%a改为!b!
结果就是“系统找不到指定的文件。”
这又是为什么啊 我都快把机试爆了!!!!
作者: Batcher 时间: 2009-2-5 09:37 标题: 回复 3楼 的帖子
先给dir命令加个/s开关再说
作者: kingerpk 时间: 2009-2-5 12:03 标题: 回复 4楼 的帖子
结果还是一样————
————“命令语法不正确。”
为什么?
作者: pusofalse 时间: 2009-2-5 17:54
当然出错,你的文件名中有叹号,预处理时丢掉了。。
- @echo Off
- For /f "delims=" %%a in ('dir/b E:\临时文件夹\2\*.txt') do (
- set "fileName=%%a"
- setlocal EnableDelayedExpansion
- set "newFile=!fileName:批处理之家 批处理,bat,dos教程,论坛,代码 - Powered by Discuz=批处理之家!"
- ren "%%~a" "!newFile!"
- endLocal
- )
- Pause>nul
复制代码
作者: kingerpk 时间: 2009-2-5 19:59 标题: 回复 6楼 的帖子
老天~~~还是
“命令语法不正确。”到底是哪里出错了?
大虾们,快发威吧!!!!
ren "%%~a" "!newFile!"
"%%~a"是什么意思?
[ 本帖最后由 kingerpk 于 2009-2-5 20:02 编辑 ]
作者: pusofalse 时间: 2009-2-5 20:29 标题: 回复 7楼 的帖子
把@echo Off 去掉,把结果贴出来看下。。
作者: kingerpk 时间: 2009-2-5 20:44 标题: 回复 8楼 的帖子
结果:
E:\临时文件夹\2>For /F "delims=" %a in ('dir/b E:\临时文件夹\2\*.txt') do (
set "fileName=%a"
setlocal EnableDelayedExpansion
set "newFile=!fileName:批处理之家 批处理,bat,dos教程,论坛,代码 - Powered by Dis
cuz=批处理之家!"
ren "%~a" "!newFile!"
endLocal
)
E:\临时文件夹\2>(
set "fileName=论坛发帖规则 - 论坛总版规 - 批处理之家 批处理,bat,dos教程,论坛,代
码 - Powered by Discuz!.txt"
setlocal EnableDelayedExpansion
set "newFile=!fileName:批处理之家 批处理,bat,dos教程,论坛,代码 - Powered by Dis
cuz=批处理之家!"
ren "论坛发帖规则 - 论坛总版规 - 批处理之家 批处理,bat,dos教程,论坛,代码 - Powe
red by Discuz!.txt" "!newFile!"
endLocal
)
命令语法不正确。
E:\临时文件夹\2>Pause1>nul
作者: pusofalse 时间: 2009-2-5 22:15 标题: 回复 9楼 的帖子
还是叹号的问题,试下这样呢?- @echo Off
- For /f "delims=" %%a in ('dir /b E:\临时文件夹\2\*.txt') do (
- set "fileName=%%a"
- setlocal EnableDelayedExpansion
- set "newFile=!fileName:论坛发帖规则 - 论坛总版规 - 批处理之家 批处理,bat,dos教程,论坛,代码 - Powered by Discuz=批处理之家!"
- ren "!fileName!" "!newFile:^!=^^!!"
- endLocal
- )
- Pause
复制代码
作者: kingerpk 时间: 2009-2-6 00:19
具体原理是什么?
"!newFile:^!=^^!!"
是什么意思?
作者: pusofalse 时间: 2009-2-6 01:26 标题: 回复 11楼 的帖子
对!进行转义,^是转义符。 跟变量延迟的特性有关,具体请搜索 "变量延迟"。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |