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

[文件操作] 批处理重命名文件名带空格的文件报错“命令语法不正确”如何解决

本帖最后由 pcl_test 于 2016-8-4 12:29 编辑

我在e:\1下建了 :
新建 文本文档.txt     
新建 文本文档(2).txt     
新建 文本文档(3).txt     
新建 文本文档(4).txt
几个文本文件,想用批处对其改名,
  1. for /f "delims=" %%a in ('dir/b e:\1') do (
  2. set b=%%a
  3. set c=!b:~3,4!
  4. ren %%a !c!
  5. )
  6. pause
复制代码
但其运行结果却是:
命令语法不正确。
请按任意键继续. . .

为什么 啊~~~~~
是不是因为有空格的原因?
要怎么改进?请大家指点指点!!谢谢!!!

[ 本帖最后由 kingerpk 于 2009-2-4 22:13 编辑 ]

回复 11楼 的帖子

对!进行转义,^是转义符。 跟变量延迟的特性有关,具体请搜索 "变量延迟"。
心绪平和,眼藏静谧。

TOP

具体原理是什么?
"!newFile:^!=^^!!"
是什么意思?

TOP

回复 9楼 的帖子

还是叹号的问题,试下这样呢?
  1. @echo Off
  2. For /f "delims=" %%a in ('dir /b E:\临时文件夹\2\*.txt') do (
  3.        set "fileName=%%a"
  4.        setlocal EnableDelayedExpansion
  5.        set "newFile=!fileName:论坛发帖规则 - 论坛总版规 - 批处理之家 批处理,bat,dos教程,论坛,代码 - Powered by Discuz=批处理之家!"
  6.        ren "!fileName!" "!newFile:^!=^^!!"
  7.        endLocal
  8. )
  9. Pause
复制代码
心绪平和,眼藏静谧。

TOP

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

TOP

回复 7楼 的帖子

把@echo Off 去掉,把结果贴出来看下。。
心绪平和,眼藏静谧。

TOP

回复 6楼 的帖子

老天~~~还是
“命令语法不正确。”到底是哪里出错了?
大虾们,快发威吧!!!!


ren "%%~a" "!newFile!"

"%%~a"是什么意思?

[ 本帖最后由 kingerpk 于 2009-2-5 20:02 编辑 ]

TOP

当然出错,你的文件名中有叹号,预处理时丢掉了。。
  1. @echo Off
  2. For /f "delims=" %%a in ('dir/b E:\临时文件夹\2\*.txt') do (
  3.         set "fileName=%%a"
  4.         setlocal EnableDelayedExpansion
  5.         set "newFile=!fileName:批处理之家 批处理,bat,dos教程,论坛,代码 - Powered by Discuz=批处理之家!"
  6.         ren "%%~a" "!newFile!"
  7.         endLocal
  8. )
  9. Pause>nul
复制代码
心绪平和,眼藏静谧。

TOP

回复 4楼 的帖子

结果还是一样————
————“命令语法不正确。”

为什么?

TOP

回复 3楼 的帖子

先给dir命令加个/s开关再说
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

还有问题~~~~~~~~~~~
文件:论坛发帖规则 - 论坛总版规 - 批处理之家 批处理,bat,dos教程,论坛,代码 - Powered by Discuz!.txt
我用以下代码进行改名:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in ('dir/b E:\临时文件夹\2\*.txt') do (
  4. set b=%%a
  5. set c=!b:批处理之家 批处理,bat,dos教程,论坛,代码 - Powered by Discuz=批处理之家!
  6. ren "%%a" "!c!"
  7. )
  8. pause
复制代码
但是结果和前面一样啊~~~~~
为什么~~~~~

还有若把ren "%%a" "!c!"  中的%%a改为!b!
结果就是“系统找不到指定的文件。”
这又是为什么啊  我都快把机试爆了!!!!

TOP

TOP

返回列表